
重複の可能性:
単一のコマンドで2つの異なるカット出力を結合しますか?
以下を含むtemp.txtファイルがあります。
ABCDF
PQRST
LMNOP
cut
このコマンドを試しました
$ cut -c 2-5 temp.txt
BCDF
QRST
MNOP
出力は正しいです。
$ cut -c 1,2,3,4 temp.txt
ABCD
PQRS
LMNO
出力は正しいです。
しかし、順序を変えると、次のような意味になります。
$ cut -c 2-4,1 temp.txt
ABCD
PQRS
LMNO
上記の出力を見せてください。
しかし論理的には、
BCDA
QRSP
MNOL
だから私の質問は、これがどのように起こり、その理由が何であるかです。
答え1
説明はにありますがman cut
、好む期待値と考えやすいです。しかしそれは言います:
Selected input is written in the same order that it is read
入力の意味はあいまいかもしれませんが、一般にオプションはオプションにすぎず、処理されるファイルは必ず入力する。
たとえばのlist
。-c 2,3,4,1
正規表現のリストによく似ています。[2341]
; 2倍になっても、リスト内のすべての数字を意味します。たとえば、-c 2,2,2,2,2,2
..と同じで-c 2
正規表現の場合[2222222]
...と同じです[2]
。重要ではない。
答え2
解決策は次のとおりです。
sed 's:^\(.\)\(.*\):\2\1:' file.txt
(昨日同様の質問に誰かが答えを投稿しました)
Cutは出力をソートしないようです。単に列/フィールド範囲を選択し、原稿と同じ順序で出力します。