Unix Script для чтения конкретной строки и позиции - PullRequest
1 голос
/ 23 сентября 2008

Мне нужно, чтобы скрипт считывал поступающие файлы и проверял информацию для проверки.

В первой строке файлов для чтения находится дата, но в числовом виде. например: 20080923 Но прежде чем дата станет другой информацией, мне нужно прочитать ее с позиции 27. Имея в виду строку 1, позицию 27, мне нужно получить это число и посмотреть, больше ли оно, чем другое число.

Я использую команду grep для проверки другой информации, но использую специальные символы для поиска, в этом случае информация до даты всегда отличается, поэтому я не могу использовать символ для поиска. Это должно быть сделано в строке 1 позиции 27.

Ответы [ 2 ]

5 голосов
/ 23 сентября 2008
sed 1q $file | cut -c27-34

Команда sed читает первую строку файла, а команда cut выделяет символы 27-34 одной строки, в которой вы указали дату.

Добавлено позже:

Для более общего случая - когда вам нужно прочитать строку 24, например, вместо первой строки, вам нужна чуть более сложная команда sed:

sed -n -e 24p -e 24q | cut -c27-34
sed -n '24p;24q' | cut -c27-34

Опция -n означает «не печатать строки по умолчанию»; 24p означает строку печати 24; 24q означает выход после обработки строки 24. Вы можете пропустить это, в этом случае sed продолжит обработку ввода, фактически игнорируя его.

Наконец, особенно если вы собираетесь проверить дату, вы можете использовать Perl для всей работы (или Python, или Ruby, или Tcl, или любой другой язык сценариев по вашему выбору).

1 голос
/ 23 сентября 2008

Вы можете извлечь символы, начиная с позиции 27 строки 1, следующим образом:

datestring=`head -1 $file | cut -c27-`

Вы выполните следующий шаг обработки для $ datestring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...