我已经搜索它没有成功。
我有一个带有路径的文件。我想打印所有路径的尾部。例如(对于文件中的每一行):
/homes/work/abc.txt
--> abc.txt
有谁知道该怎么做?
谢谢
awk -F "/" '{print $NF}' input.txt
将给出以下输出:
abc1.txt
abc2.txt
abc3.txt
为了:
$>cat input.txt
text path/to/file/abc1.txt
path/to/file/abc2.txt
path/to/file/abc3.txt
这个怎么样awk
echo "/homes/work/abc.txt" | awk '{sub(/.*\//,x)}1'
abc.txt
因为.*
是贪婪的,所以它会一直持续到最后/
所以这里我们使用 删除所有直到最后/
,x
并且因为x
是空的,所以什么都不提供。
雷神版
echo "/homes/work/abc.txt" | awk -F/ '$0=$NF'
abc.txt
注意这将失败/homes/work/0
或0,0
等更好地使用:
echo "/homes/work/abc.txt" | awk -F/ '{$0=$NF}1'
awk
@Jotne和@bashophil已经提供了解决方案
这里有一些其他的变化(只是为了好玩)
使用sed
sed 's:.*/::' file
使用grep
grep -oP '(.*/)?\K.*' file
使用cut
- 由@Thor添加
rev file | cut -d/ -f1 | rev
使用basename
- 由@fedorqui和@EdMorton建议
while IFS= read -r line; do
basename "$line"
done < file