如何使用awk打印路径文件名的尾部

时间:2013-11-10 14:17:40

标签: linux awk

我搜索它没有成功。

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

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

有谁知道怎么做?

由于

3 个答案:

答案 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/00,0等会失败,因此请更好地使用:

echo "/homes/work/abc.txt" | awk -F/ '{$0=$NF}1'

答案 2 :(得分:4)

@Jotne @bashophil 已提供

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