Linuxでファイルの最後の列を削除する方法

Linuxでファイルの最後の列を削除する方法

txtファイルの最後の列を削除したいのですが、列番号が何であるかわかりません。どうすればいいですか?

例:

入力する:

1223 1234 1323 ... 2222 123
1233 1234 1233 ... 3444 125
0000 5553 3455 ... 2334 222

私の出力は次のとおりです。

1223 1234 1323 ... 2222
1233 1234 1233 ... 3444
0000 5553 3455 ... 2334

ベストアンサー1

そしてawk

awk 'NF{NF-=1};1' <in >out

または:

awk 'NF{NF--};1' <in >out

または:

awk 'NF{--NF};1' <in >out

これは桟橋のように見えるかもしれませんが、実際には効果があります。すべてのawkコマンドは3つの部分で構成されています。

最初のものはNF、これが2部の前提です。NF行のフィールド数を含む変数です。 AWKでは、ゼロでないか空の文字列でない場合はtrueです""。したがって、2番目の部分(NF減少が発生する部分)はNF0以外の場合にのみ発生します。

2番目の部分(NF-=1 NF--または--NF)はNF変数から1を減算します。これにより、フィールドが変更された場合(この場合は最後のフィールドが削除されます)、デフォルトでは空白で区切られたすべてのフィールドをリンクするように再構成されるawkため、最後のフィールドは印刷されません。最後のフィールドは含まれなくなりました。$0$0

最後の部分はです1。それは魔法ではなく、単に何かを意味する表現として使用されますtrueawk式がtrueと評価され、関連するジョブがない場合、デフォルトのジョブはawkですprint $0

おすすめ記事