![3番目の列の数字でデータをソートする方法は? [コピー]](https://linux33.com/image/82804/3%E7%95%AA%E7%9B%AE%E3%81%AE%E5%88%97%E3%81%AE%E6%95%B0%E5%AD%97%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%BD%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
次のデータで構成されるファイルがある場合は、3番目の列の数字に基づいてデータをどのように並べ替えますか?最初の2つの列の間のスペースはタブ区切りではなく、いくつかのスペースです。 2番目の列と3番目の列の間の間隔は、数字のサイズによって異なります。また、2 番目の列の一部のデータには空白が含まれていますが(および間)、lp25( plasmid
他のデータには空白がありません(例:)。(
p
chromosome
HELIX lp25(plasmid 24437 bp RNA linear 29-AUG-2011
HELIX cp9(plasmid 9586 bp DNA helix 29-AUG-2011
HELIX lp28-1(plasmid 25455 bp DNA linear 29-AUG-2011
HELIX chromosome 911724 bp DNA plasmid 29-AUG-2011
答え1
この試み:
sort -n --k3 <file>
たとえば、
$ sort -n -k3 test
HELIX cp9(plasmid 9586 bp DNA helix 29-AUG-2011
HELIX lp25(plasmid 24437 bp RNA linear 29-AUG-2011
HELIX lp28-1(plasmid 25455 bp DNA linear 29-AUG-2011
HELIX chromosome 911724 bp DNA plasmid 29-AUG-2011
-n
数字で並べ替えて-k3
3列を選択します。
答え2
sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -k 3
最初のsed
コマンドは、すべてのタブ文字を単一のスペースに置き換えます。
tr -s " "
複数の連続した空白文字が1文字に圧縮されることを示しますspace
。
数値ソートが必要な場合は、次のものを使用できます。
sed $'s/\t/ /g' my_file | tr -s " " | sort -t" " -n -k 3
もちろん、これが2番目の列の不規則性を修正するわけではありませんでした。したがって、編集します。この場合、質問があります。次の行で
HELIX lp28-1(plasmid 25455 bp DNA linear 29-AUG-2011
^ ^
1 2
これらの区切り記号1
と2
タブまたはスペースはありますか?