我想"提取"使用grep。
的完整路径字符串中的文件名例如:
基本上我想要与之相反:
$ ls /etc/network/interfaces | grep "^.*/"
我试过了:
$ ls -p /etc/network/interfaces | grep "/.*$"
但它不会是最后一个斜线(/),所有字符(。*),直到结束($)。由于斜杠也是字符,因此它匹配所有路径。
有没有人知道只匹配最后一部分的方法?喜欢的东西(从最后一次斜线到结束。
谢谢,
答案 0 :(得分:2)
awk
,将/
分隔的最后一个字段:
% awk -F/ '{print $NF}' <<<'/etc/network/interfaces'
interfaces
% awk -F/ '{print $NF}' <<<'/home/user/Documents/report.pdf'
report.pdf
grep
,获取上一个/
之后的部分:
% grep -o '[^/]\+$' <<<'/etc/network/interfaces'
interfaces
% grep -o '[^/]\+$' <<<'/home/user/Documents/report.pdf'
report.pdf
sed
,用null替换上一个/
的所有内容:
% sed 's_.*/__' <<<'/etc/network/interfaces'
interfaces
% sed 's_.*/__' <<<'/home/user/Documents/report.pdf'
report.pdf
答案 1 :(得分:1)
如何简单地匹配/
?此外,对于提取,您需要-o
标记grep
。
ls -p /etc/network/interfaces | grep -o '[^/]*$'
答案 2 :(得分:0)
如第一条评论所述,您可以直接尝试使用awk之类的内容:
ls -l /etc/networks | awk '{print $NF}' | awk -F "/" '{print $NF}'
应该可以修剪这两个awk管道