场分离器

时间:2013-01-22 08:05:45

标签: awk gawk

我有很多编程经验,但我对awk很新。有些东西没有像我期望的那样表现。有人可以直截了当地说出来吗?

在linux上,我的命令: gawk -f do3 tmp6.txt

我的源文件do3

#!/bin/gawk -f
BEGIN {
FS="-"
}
{print "Two is " $2 "One is" $1 "zero is" $0}

我的输入文件,tmp6.txt

~BAND:3-10M
~MODE:2-CW
~QSO_DATE:8-20111130
~TIME_ON:6-175415
~eor-

~PFX:2-K4
~CQZ:1-5
~ITUZ:1-8
~eor-

我输出到控制台:

One is~BAND:3zero is~BAND:3-10M
One is~MODE:2zero is~MODE:2-CW
One is~QSO_DATE:8zero is~QSO_DATE:8-20111130
One is~TIME_ON:6zero is~TIME_ON:6-175415
One is~eorzero is~eor-
zero isOne is
One is~PFX:2zero is~PFX:2-K4  
One is~CQZ:1zero is~CQZ:1-5
One is~ITUZ:1zero is~ITUZ:1-8
One is~eorzero is~eor-
zero isOne is

以第一行为例,我可以期待的是 在每一行中,我认为应该是开始的

Two is followed by the value assigned to $2, the value after the "-" in each line.

然而,在每种情况下都没有。

其他更复杂的案例表现出更加不同寻常的行为(如反向标签),但如果我能解决这一部分,也许这将有助于我理解其余部分。

提前致谢, JimR

1 个答案:

答案 0 :(得分:3)

您的文件很可能在行尾包含^ M.在运行gawk命令之前:

dos2unix tmp6.txt

将删除^ M个字符。