Мой входной файл выглядит так, как показано ниже,
1,,B4,3000,Rushab,UNI,20130919T22:45:05+0100,20190930T23:59:59+0100,,kapeta,,6741948090816,2285917436,971078887,1283538808965528,20181102_20001,,,,,,,,,,,,,,,C
2,,B4,3000,Rushab,UNI,20130919T22:45:05+0100,20190930T23:59:59+0100,20181006T11:57:13+0100,,vsuser,6741948090816,2285917436,971078887,1283538808965528,20181102_20001,,,,,,,,,,,,,,,H
1,,F1,100000,RAWBANK,UNI,20180416T15:25:00+0100,20190416T23:59:59+0100,,enrruac,,7522609506635,3101315044,998445487,1290161608965816,20181102_20001,,,,,,,,,,,,,,,C
4,,F1,100000,RAWBANK,UNI,20180416T15:25:00+0100,20190416T23:59:59+0100,20181007T22:25:13+0100,,vsuser,7522609506635,3101315044,998445487,1290161608965816,20181102_20001,,,,,,,,,,,,,,,H
Я хочу напечатать только строку, начинающуюся с «1» и заканчивающуюся на «C», поэтому я пытаюсь выполнить команду ниже,
awk -F, '$1=='1' && $31=='C'{print $0}' input_file.txt
но я не получаю никаких результатов.





Используйте двойные кавычки:
awk -F, '$1= = "1" && $31= = "C"{print $0}' file
или
awk -F, '$1= = "1" && $31= = "C"' file
Обратите внимание, что 1 не требует кавычек.
Как предлагали другие пользователи, это можно сделать с помощью простого регулярного выражения. Таким образом, вы можете использовать sed, а также awk
sed '/^1,.*,C$/!d' file
Если вы не добавите разделители, совпадения будут ложными. Например. 11,....,NotC тоже подойдет. /^1,.*,C$/!d должен это исправить.
С регулярным выражением:
awk '/^1.*C$/' fileилиawk '/^1,.*,C$/' file