私はこのようなことをしたい:
cat abcd.txt | cut -f 2,1
そして、出力の順序を2、次に1にします。私がテストしているマシン(FreeBSD 6)では、これは発生していません(1,2の順序で印刷されます)。これを行う方法を教えてもらえますか?
私はいつでもこの逆転を行うためのシェルスクリプトを書くことができることを知っていますが、私は「カット」コマンドオプションを使用して何かを探しています。
私はcutを含むcoreutilsのバージョン5.2.1を使用していると思います。
これは、cut
を使用して実行することはできません。マニュアルページによると:
選択された入力は、読み取られるのと同じ順序で書き込まれ、1回だけ書き込まれます。
パッチ適用cut
は 提案多く回 ですが、 完全なパッチは拒否されました です。
代わりに、次のようにawk
を使用して実行できます。
awk '{print($2,"\t",$1)}' abcd.txt
\t
をフィールド区切り文字として使用しているものに置き換えます。
ラースの答えは素晴らしかったが、私はさらに良いものを見つけた。彼の問題は、列がないため\ t\tと一致することです。これを修正するには、以下を使用します。
awk -v OFS=" " -F"\t" '{print $2, $1}' abcd.txt
どこ:
-F"\t"
は何をカットするかです正確に(タブ)。
-v OFS=" "
は何で区切るか(2つのスペース)
例:
echo 'A\tB\t\tD' | awk -v OFS=" " -F"\t" '{print $2, $4, $1, $3}'
この出力:
B D A