5

我已经搜索它没有成功。

我有一个带有路径的文件。我想打印所有路径的尾部。例如(对于文件中的每一行):

/homes/work/abc.txt
--> abc.txt

有谁知道该怎么做?

谢谢

4

3 回答 3

7
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
于 2013-11-10T14:34:27.767 回答
5

这个怎么样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/00,0等更好地使用:

echo "/homes/work/abc.txt" | awk -F/ '{$0=$NF}1'
于 2013-11-10T14:23:48.703 回答
4

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
于 2013-11-10T14:28:23.597 回答