我搜索它没有成功。
我有一个带有pathes的文件。 我想要打印所有路径的尾部。 例如(对于文件中的每一行):
/homes/work/abc.txt
--> abc.txt
有谁知道怎么做?
由于
答案 0 :(得分:6)
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
答案 1 :(得分:5)
这个awk
echo "/homes/work/abc.txt" | awk '{sub(/.*\//,x)}1'
abc.txt
由于.*
贪婪,它会持续到最后/
所以我们在/
的最后x
之前删除所有内容,并且由于x
为空,因此不提供任何内容。
Thors版
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'
答案 2 :(得分:4)
awk
个解决方案
以下是其他一些变体(只是为了好玩)
使用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