分裂根据字段分隔为每行一个字符串

问题描述:

我有如下文件:分裂根据字段分隔为每行一个字符串

10temp3 
20/temp4 
28 temp 5 

我使用下面的命令分割线,并获得该行的最后一个数字。

awk -F"temp" '{print $NF}' temp3 

我得到的输出继电器是:

> awk -F"temp" '{print $NF}' temp3 
10temp3 
20/temp4 
28 temp 5 

令人惊讶的,如果我使用NAWK我得到预期的输出。

> nawk -F"temp" '{print $NF}' temp3 
3 
4 
5 
> 

我可以知道原因吗? awk是否不支持作为分隔符提到的字符串?

+0

如果行中的最后一个数字是你想要的所有东西'sed's /.* temp * //'file'可能是一个更好的选择。 – potong 2012-08-13 20:01:03

+0

我想在这里探究awk的行为..我知道这可以通过使用其他工具如sed和perl来完成。 – Vijay 2012-08-14 06:10:44

确实Solaris awk只考虑单个字符。我想说这可能是由于传统,以及nawk的出货原因。

-F开关确实是特殊的:它把你的引用字符串的第一个字符,并丢弃剩下的,所以t仍然---代表“寻找标签作为字段分隔符”。

+0

那么如果这就是为什么它不考虑至少t字段分隔符和打印emp3作为第一行的$ NF? – Vijay 2012-08-13 13:52:54

+1

@ShiDoiSi:'$ NF'表示线上最后一个字段的内容。你是正确的,AWK不使用美元符号来表示变量,它将它们用于字段编号。 “NF”是包含最后一个字段号的变量。 – 2012-08-13 23:42:31

+0

@DennisWilliamson对,我没有密切关注他的预期输出,我以为他想打印字段的数量。 – ShiDoiSi 2012-08-14 07:14:37