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
減少が発生する部分)はNF
0以外の場合にのみ発生します。
2番目の部分(NF-=1
NF--
または--NF
)はNF
変数から1を減算します。これにより、フィールドが変更された場合(この場合は最後のフィールドが削除されます)、デフォルトでは空白で区切られたすべてのフィールドをリンクするように再構成されるawk
ため、最後のフィールドは印刷されません。最後のフィールドは含まれなくなりました。$0
$0
最後の部分はです1
。それは魔法ではなく、単に何かを意味する表現として使用されますtrue
。awk
式がtrueと評価され、関連するジョブがない場合、デフォルトのジョブはawk
ですprint $0
。