sed/awk: Extract pattern from text stream
2开发者_如何学C011-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 ...
I have a file looks like the above. I want to extract the file names from it and output to STDOUT as:
server_log_1.log
server_log_2.log
server_log_3.log
Could someone help? Thanks!
The file name pattern is server_log_xxx.log, and it only occurs once in a line.
Assuming the "xxx" placeholder is only digits:
grep -o 'server_log_[0-9]\+\.log'
Pipe your file through following command:
sed 's/.*\(server_log_[0-9]\+\.log\).*/\1/'
With awk and your input pattern:
awk 'BEGIN {FS="/"}
{ print gensub(" .*$","","g",$5) }' INPUTFILE
See it action here: https://ideone.com/kcadh
HTH
sed 's|.*/\([^/ ]*\).*|\1|' infile
精彩评论