2014-04-24 185 views
0

匹配的模式,比如我有这样的数据:打印与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

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

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

由于HD1的评论已经指出的那样,NF是对当前输入记录的字段数(在这种情况下,线)。由于awk开始索引字段$1$NF为您提供最后一个字段。

+0

你想解释我什么是NF您可以使用此短awk

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

? 如何,这将给我所有的文档文件,不仅.txt .. – jovanMeshkov

+0

从gawk手册页 - 'NF当前输入记录中的字段数.' – hd1

+0

@JovanMeshkov,完整性更新。 – merlin2011

0

如果您需要空行使用

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