以下はテキストファイルの例です。
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
.4
n
みんな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
答え2
使用sort -t: -nk2.4
-t uses the delimiter :
-n for numerical sort
-k your key is the second column
主な定義はでよく説明されていますinfo sort
。
'-k POS1[,POS2]'
'--キー=POS1[,POS2]'
POS1とPOS2の間の行部分(またはPOS2が省略されている場合は行の終わり)で構成されるソートフィールドを指定します。 含まれる。
各POSの形式は「F[.C] [OPTS]」です。ここで、Fは使用するフィールド番号、Cはフィールドの先頭の最初の文字番号です。フィールドと文字の位置は 1 から始まり番号が付けられます。 POS2 の文字位置 0 はフィールドの最後の文字を示します。 POS1で「.C」が省略されている場合はデフォルト値は1(フィールド開始)、POS2で省略されている場合はデフォルト値は0(フィールド終了)です。 OPTSは、個々のキーをさまざまな規則に従ってソートできるソートオプションです。詳しくは下記をご覧ください。キーは複数のフィールドにまたがることができます。
例: 2 番目のフィールドを並べ替えるには、 "--key=2,2" ("-k 2,2") を使用します。キーストロークの詳細とその他の例については、下記をご覧ください。また、ソートに使用される行の部分を決定するのに役立つ「--debug」オプションも参照してください。