Reputation: 26548
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 ...
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.
Upvotes: 13
Views: 41607
Reputation: 8484
Pipe your file through following command:
sed 's/.*\(server_log_[0-9]\+\.log\).*/\1/'
Upvotes: 10
Reputation: 247230
Assuming the "xxx" placeholder is only digits:
grep -o 'server_log_[0-9]\+\.log'
Upvotes: 27
Reputation: 51693
With awk and your input pattern:
awk 'BEGIN {FS="/"}
{ print gensub(" .*$","","g",$5) }' INPUTFILE
See it action here: https://ideone.com/kcadh
HTH
Upvotes: 1