2017-03-18 12 views
0

2番目の列の番号を減らしてファイルを並べ替えるが、ヘッダーの場所は変更しない。現在、それはこのような2つの列があり、csvファイルでこのようなものです:Unix、番号で並べ替え

Person  Age 

Sarah  15 

Robert  23 

Emma  31 

Bob  9 

私はそれはこのようになりたい:Unixの初心者を助ける

Person  Age 

Emma  31 

Robert  23 

Sarah  15 

Bob  9 

してください。

答えて

1

UNIX/Linuxのsortコマンドについては、http://man7.org/linux/man-pages/man1/sort.1.htmlを参照してください。それが私と他の誰もが学んだ方法です。

$ sort --key 2 --reverse --numeric-sort myfile > mysortedfile 

唯一の問題は、これはそれがゼロの数値を持っていたかのように「人時代」の行をソートし、ファイルの最後の行に移動していることです。ファイルをソートした後、その行を移動する必要があります。

0

これは、空白行を削除することを除いて、このトリックを行います。

sed -n '1! p 'sortme.txt | sort --key 2 --reverse --numeric-sort |手形に概説されているよう「ヘッダ前に、」問題を解決するために

〜パット

+0

ありがとうございます、彼らは正面に来ていますが、それらはcsvの別のセルで分かれていません。それを修正するには? – reader

+0

申し訳ありませんが、私はあなたの質問を理解していません。 –

+0

http://stackoverflow.com/questions/42877958/unix-separate-two-words-in-table私はそれを説明しました。 – reader

0

sorted.txt>「私は人\田下を\ 1」sedの答え、あなたがsortに加えてawk使用することができます

awk 'NR==1 {print ; next } { print | "sort -n -r -k2" }' yourfile > sorted_file 
  • 条件NR==1は、最初の行のみに適用されます。それは
  • 他のすべての行を印刷しているsortコマンドにパイプされている(あなたが01でソートを行うことができますそのものですが、これはもう少し長くなります)
関連する問題