使用AWK打印匹配的图案

时间:2014-04-24 22:56:01

标签: regex unix awk

例如,我有这些数据:

/home/test/dat1.txt
/home/test/dat2.txt
/home/test/test1/dat3.txt
/home/test/test2/dat4.txt
/home/test/test3/test4/dat5.txt

我只需要打印名称和扩展名,输出应该是:

dat1.txt
dat2.txt
dat3.txt
dat4.txt
dat5.txt

我需要使用awk命令......任何人都可以提供帮助吗?

我使用这个正则表达式:'/\/*\.txt/{print ???}

2 个答案:

答案 0 :(得分:2)

如果您要使用awk,则不需要为此目的使用正则表达式。 您可以使用awk的字段分隔符告诉/打印最后一个字段。

awk -F'/' '{print $NF}' Input.txt

正如hd1的评论已经注意到,NF是当前输入记录(在本例中为行)中的字段数。由于awk开始为$1的字段编制索引,$NF会为您提供最后一个字段。

答案 1 :(得分:0)

您可以使用此短awk

awk -F/ '$0=$NF' Input.txt

如果您需要空行使用

awk -F/ '{$0=$NF}1' Input.txt