間に3つの列を持つテキストファイルがあります。 2番目の列の最後の2桁の数字で2番目の列をソートする方法は?

間に3つの列を持つテキストファイルがあります。 2番目の列の最後の2桁の数字で2番目の列をソートする方法は?

以下はテキストファイルの例です。

195.92.211.47:21029:400
195.92.211.48:21023:400

2番目の列の最後の2桁に基づいてファイル行をソートする方法は? 2番目の列は常に5桁の数字です。

ベストアンサー1

2番目:に区切られたフィールドには常に5桁の数字が含まれているとします。

$ sort -t ':' -k2.4,2n file
195.92.211.48:21023:400
195.92.211.47:21029:400

文字4(この機能)からフィールドの終わりまでの2番目のフィールドをソートキーとして使用し、-k2.4,2n入力をそのキー(最後のキー)に基づいて数字でソートするように指示します。数字で並べ替えるにはsort.4nみんな2番目のフィールドはを使用します-k2,2n。我々は-t ':'フィールドがコロンで区切られたと述べた。

コマンドを実行すると(--debugここにGNUとOpenBSDの両方が表示されますsort)、正しい数字でソートされていることがわかります。sort

$ gsort --debug -t ':' -k2.4,2n file
gsort: text ordering performed using simple byte comparison
195.92.211.48:21023:400
                 __
_______________________
195.92.211.47:21029:400
                 __
_______________________
$ sort --debug -t ':' -k2.4,2n file
Memory to be used for sorting: 2139060224
sort_method=heapsort
; k1=<23>, k2=<29>; s1=<195.92.211.48:21023:400>, s2=<195.92.211.47:21029:400>; cmp1=-1
195.92.211.48:21023:400
195.92.211.47:21029:400

おすすめ記事