質問

このようなことをしたい:

cat abcd.txt | cut -f 2,1 

そして出力の順序を2にした後、1にしたい。私がテストしているマシン(FreeBSD 6)では、これは起きていません(1,2の順序での印刷)。これを行う方法を教えてもらえますか?

この反転を行うシェルスクリプトをいつでも作成できることは知っていますが、「カット」コマンドオプションを使用して何かを探しています。

cutを含むcoreutilsのバージョン5.2.1を使用していると思います。

役に立ちましたか?

解決

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

  

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

パッチング 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    
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top