我有一个文件,其中包含如下行:
-rw-rw-rw 1 root root 6379 May 24 2016 test1.CSV
-rw-rw-rw 1 root root 23249 May 25 2016 test2.CSV
-rw-rw-rw 1 root root 2995 May 26 2016 test3.CSV
我只需要保留 CSV 文件名。我必须使用正则表达式,但我不知道是哪一个。
预期结果为“test1.CSV \n test2.CSV \n test3.CSV”。
答案1
您可以使用grep
grep -io '[^ ]*\.csv' filename
-i, --ignore-case 忽略大小写区别,以便仅大小写不同的字符相互匹配。
-o, --only-matching 仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上。
[^ ]*\.csv
匹配除以 .csv 结尾的空格之外的任何字符
我假设文件名没有空格
或者你可以使用awk
awk '{print $(NF)}' filename | grep -i '\.csv'
变量$(NF)
是每行的最后一个字段
答案2
尝试这个:[^ ]* *$
或者简单地说,如果相关的话,gawk '{print $NF}'
答案3
尝试这个,
awk '$NF~/CSV$/ {print $NF}' file
- 提取以 CSV 结尾的行并打印最后一个字段
答案4
您可以使用“awk”:
awk '{print $9}' files
只要文件名是该行中的第 9 个字段,它就会起作用。