1

私はプログラミングの経験が豊富ですが、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

4

1 に答える 1

3

ほとんどの場合、ファイルの行末に^Mが含まれているようです。gawkコマンドを実行する前に:

dos2unix tmp6.txt

これにより、^M文字が削除されます。

于 2013-01-22T08:09:56.103 に答える