awk字段分隔符行为

Ser*_*jev 5 awk

为什么这个awk脚本:

awk '{FS = "\t" ; print $1 " - " $2}' A.txt
Run Code Online (Sandbox Code Playgroud)

使用此输入文件A.txt

B A A1
C B A2
D A A3
Run Code Online (Sandbox Code Playgroud)

输出这些结果

B - A
C B - A2
D A - A3
Run Code Online (Sandbox Code Playgroud)

请注意,在第一个B和A之间有一个空格而不是制表符.我仔细检查过这个

小智 7

我相信这是因为FS正在设置第一个动作.在调用第一个操作之前,第一行的拆分已经完成,它使用默认的FS(空白).

因此,为了使其一致,您应该awk使用-F选项调用.


Dr.*_*ius 7

正确的方法是:

BEGIN {FS = "\t"}
{ print $1 " - " $2}  
Run Code Online (Sandbox Code Playgroud)

您设置FS太晚了(在拆分第一行之后)