awkコマンドが正しく機能しない

awkコマンドが正しく機能しない

非常に単純な問題がありますが、何らかの理由で動作しません。

.txtこのファイルは次の形式です。

2    250    1
4    250    1
5    250    1

最初の列の数字から1を引いて、次のようにしたいと思います。

1    250    1
3    250    1
4    250    1

私はbashでこのコードを使います:

awk '{ print $1-1,$2,$3 }' file.txt > newfile.txt

私はこのコードが大丈夫だと思いましたが、このテキストファイルのファイル拡張子がから変更されたため、.csvこの.txtawk行は正しく機能しないようです。それは次のものを生成します:

1    250    1
4

私が持っているテキストファイルとうまく機能する代替手段がありますか?

更新:picoエディタを使用してファイルの1つを再生成しましたが、上記のコードは完全に実行されるため、フォーマットとプロパティの面で元のテキストファイルに問題があるようです...どのような洞察がありますか?

ベストアンサー1

説明されている問題は行末に関連しているようです。テキストファイルにキャリッジリターン/改行文字がある場合、awkキャリッジリターンは別の空白文字として扱われ、出力からテキストを上書きします。

編集によるOP pico(これに伴い改行行末を想定)改行文字を設定する簡単な方法ページ)。dos2unixFix Line Endingsなどのプログラムを使用することもできます。

追加資料:

おすすめ記事