Awkのデフォルトの区切り文字は、空白から非空白への変更です。
カットのデフォルトはタブ文字です。
非空白から空白へのデリムターを使用するようにcutに指示できますか?
例えば。
a:
foo bar
cut -d' ' -f2 a
スペースだけを出力しますが、barを出力する必要があります。
awk '{ print $2; } a
プリントバー。
もちろん、そのセマンティクスが必要な場合は、カットの代わりにawkを使用できることがよくあります。ただし、cutには、メモリ効率が非常に高いという利点があります。特に、未使用の列をメモリにロードしません(一部のawkとは異なります)。
cut(1)
にあなたが望むことをさせる方法がわかりません。空白の区切り文字が混在している場合、最良の選択肢はawk(1)
であると信じているのは正しいと思います。
tr -s ' ' '\t'
のようなものでデータを前処理することができます。しかし、あなたの列が非常に長くなければ、あなたは何の利益も得られないでしょう。 (どのくらいですか?測定して調べてください。)