Решение:
| xargs -I{} sed '{}q;d' /var/log/some.log
См. Как получить n -ю строку из файла
Комментарий:
Возможно, вы могли бы сократить длинную последовательность каналов (, включая последний шаг ), написав более сложную команду sed
, awk
или perl
:
perl -lane 'print $F[9] if /01\/01/ and /some/ and $F[9]!~/200/' /var/log/some.log
find -name
может работать с ??11*
или ??52*
. Это не регулярное выражение, но этого может быть достаточно.
find. -name '??11*' -o -name '??52*'
Примечание ?
может соответствовать цифре, отличной от -. Чтобы сопоставить цифру, используйте [0123456789]
. Формы [[:digit:]]
или [0-9]
полезны в целом, но зависят от локали -. Я точно вижу, что рассматриваемые имена файлов используют 0123456789
, поэтому [0123456789]
— лучший выбор. Примеры:
find. -name '[0123456789][0123456789]11*' -o -name '[0123456789][0123456789]52*'
# or
LC_ALL=C find. -name '[0-9][0-9]11*' -o -name '[0-9][0-9]52*'
Однако среди предоставленных вами имен файлов нет ни одного совпадения.