2009-06-24 11 views
25

を強制します。私がテストしているマシン(FreeBSD 6)では、これは起こっていません(1,2オーダでの印刷)。これを行う方法を教えていただけますか?は、私はこのような何かをしたいcutコマンドからの出力フィールドの順序

私はいつもこの逆転を行うためのシェルスクリプトを書くことができますが、私は 'cut'コマンドオプションを使って何かを探しています。

私はcoreutilsのカットを含むバージョン5.2.1を使用していると思います。

答えて

27

これは、のカットを使用して行うことはできません。マニュアルページによると:

選択された入力は、読み込まれたのと同じ順序で書き込まれ、一度だけ書き込まれます。

代わりに、あなたはこのように、awkをを使用してそれを行うことができます。

awk '{print($2,"\t",$1)}' abcd.txt 

を使用すると、フィールドセパレータとして使用しているものは何でもして、\ tを交換してください。

11

ラースの答えは素晴らしかったが、私はさらに良いものを見つけた。彼の問題は\ t \ tと列が一致しないことです。これを修正するには、以下を使用します。

awk -v OFS=" " -F"\t" '{print $2, $1}' abcd.txt 

-F"\t"正確(タブ)にカットするものです。

-v OFS=" "は(二つのスペース)で区切るするものです

例:

echo 'A\tB\t\tD' | awk -v OFS=" " -F"\t" '{print $2, $4, $1, $3}' 

これは出力:Cygwinので

B D A  
+1

を私は-F "\トン" を置き換えなければなりませんでした - この作業を行うにはFしません。 –

関連する問題