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,它只在一行中出现一次。
答案 0 :(得分:21)
假设“xxx”占位符仅为数字:
grep -o 'server_log_[0-9]\+\.log'
答案 1 :(得分:7)
通过以下命令管道文件:
sed 's/.*\(server_log_[0-9]\+\.log\).*/\1/'
答案 2 :(得分:1)
使用awk和输入模式:
awk 'BEGIN {FS="/"}
{ print gensub(" .*$","","g",$5) }' INPUTFILE
在此处查看操作:https://ideone.com/kcadh
HTH
答案 3 :(得分:0)
sed 's|.*/\([^/ ]*\).*|\1|' infile