sed / awk: извлечение шаблона из текстового потока - PullRequest
9 голосов
/ 04 августа 2011
2011-07-01 ... /home/todd/logs/server_log_1.log ...
2011-07-02 ... /home/todd/logs/server_log_2.log ...
2011-07-03 ... /home/todd/logs/server_log_3.log ...

У меня файл выглядит как выше.Я хочу извлечь из него имена файлов и вывести их в STDOUT как:

server_log_1.log
server_log_2.log
server_log_3.log

Может кто-нибудь помочь?Спасибо!

Шаблон имени файла - server_log_xxx.log, и он встречается только один раз в строке.

Ответы [ 4 ]

23 голосов
/ 04 августа 2011

Если в качестве заполнителя "xxx" используются только цифры:

grep -o 'server_log_[0-9]\+\.log'
7 голосов
/ 04 августа 2011

Передайте файл с помощью следующей команды:

sed 's/.*\(server_log_[0-9]\+\.log\).*/\1/'
1 голос
/ 04 августа 2011

С awk и вашим шаблоном ввода:

awk 'BEGIN {FS="/"}
     { print gensub(" .*$","","g",$5) }' INPUTFILE

Смотрите это действие здесь: https://ideone.com/kcadh

НТН

0 голосов
/ 04 августа 2011
sed 's|.*/\([^/ ]*\).*|\1|' infile
...