Возможно, в какой-то момент эта команда проходила через Windows, поэтому теперь она имеет окончание строки \ r \ n
, но * nix ищет только \ n
, поэтому остается \ r
. Предполагая, что это есть в сценарии, вы можете использовать в нем dos2unix
, чтобы удалить лишние символы \ r
.
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.
Не так сложно указать ширину полей, учитывая, что вы хотите рассматривать строку только как три поля (0 -17, 18 -57, 58+):
awk -v FIELDWIDTHS="17 40" -e '$2 ~ /Cook Co\. IL/'
sed -e 'h; s/./&\n/57; /^.\{17\}.*Cook Co[.] IL.*\n/!d; g' yourfile
Отметьте правую -границу и наложите ограничение с помощью ^ на левую границу. В этом регионе найдите регулярное выражение. Если найдено, распечатайте трюм с ориг. линия.