Unix 根据字段分隔符将行拆分为字符串

Unix 根据字段分隔符将行拆分为字符串,unix,awk,solaris,Unix,Awk,Solaris,我有一个文件如下: 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 >

我有一个文件如下:

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不支持作为分隔符的字符串吗?

确实,Solaris
awk
只考虑单个字符。我想说这可能是因为传统,也正是
nawk
上市的原因


-F
开关非常特殊:它取带引号的字符串的第一个字符,并丢弃其余字符,因此
t
保持不变,这表示“将tab作为字段分隔符查找”.

那么,如果这就是为什么它不考虑至少t作为字段分隔符,并将emp3打印为第一行的$NF?@ShiDoiSi:
$NF
表示该行最后一个字段的内容。您是对的,AWK不使用美元符号作为变量,而是使用美元符号作为字段号
NF
是包含最后一个字段编号的变量。@DennisWilliamson对,我没有密切注意他的预期输出,我以为他想打印字段的数量。如果行中的最后一个数字是您想要的
sed的/*temp*/'文件
可能是一个更好的选择。我想在这里探讨awk的行为。我知道这可以通过使用其他工具,如sed和perl来实现。