Искать в строках текстового файла шаблон между двумя позициями и печатать всю строку

Возможно, в какой-то момент эта команда проходила через Windows, поэтому теперь она имеет окончание строки \ r \ n , но * nix ищет только \ n , поэтому остается \ r . Предполагая, что это есть в сценарии, вы можете использовать в нем dos2unix , чтобы удалить лишние символы \ r .

2
29.06.2017, 19:40
3 ответа

awkрешение:

awk 'substr($0,18,57-18)~/Cook Co\. IL/' file

substr(string, start [, length ])
Return a length-character-long substring of string, starting at character number start.

3
27.01.2020, 21:55

Не так сложно указать ширину полей, учитывая, что вы хотите рассматривать строку только как три поля (0 -17, 18 -57, 58+):

awk -v FIELDWIDTHS="17 40"  -e '$2 ~ /Cook Co\. IL/'
2
27.01.2020, 21:55
sed -e 'h; s/./&\n/57; /^.\{17\}.*Cook Co[.] IL.*\n/!d; g' yourfile

Отметьте правую -границу и наложите ограничение с помощью ^ на левую границу. В этом регионе найдите регулярное выражение. Если найдено, распечатайте трюм с ориг. линия.

0
27.01.2020, 21:55

Теги

Похожие вопросы