質問: -99) print $1,$2,$3,$4,$5,$6,$7 }' input.txt > output.txt しかし、どちらも空のoutput.txtを返しました。誰かが私が間違っていることを教えてもらえますか?ありがとう。
回答: スクリプトを実行するファイルには、dosの行末があります。 windowsマシンで作成された可能性があります。dos2unixを使用して、unixテキストファイルに変換します。または、trから実行します。tr -d '\r' <input.txt >input-unix.txt 次に、input-unix.txtを他の点では正しいawkコードとともに使用します。入力ファイルの代わりにawkコードを変更するには:awk -f, '$7 == "-99\r"' input.txt >output.txt これは行末の改行を考慮に入れています。または、awk -f, '$7 + 0 == -99' input.txt >output.txt これにより、7番目の列が強制的に数値として解釈され、キャリッジリターンが「削除」されます。同様に、awk -f, 'int($7) == -99' input.txt >output.txt \rも削除されます。