tl;dr

sort -t'行中に現れない文字' -k1.ソート開始文字位置

具体例: ss コマンドでポートをlistenしているプロセスを出力し、grep で 50000番以上のポートを抽出後、ポート番号でソートして出力

$ sudo ss -ltpn | grep -P ':5\d{4}' | sort -t_ -k1.37
LISTEN 0      128    192.168.10.155:50066      0.0.0.0:*    users:(("ssh",pid=754308,fd=8))
LISTEN 0      4096             [::]:50080         [::]:*    users:(("docker-proxy",pid=2017,fd=4))
LISTEN 0      4096          0.0.0.0:50080      0.0.0.0:*    users:(("docker-proxy",pid=2011,fd=4))
LISTEN 0      128             [::1]:50155         [::]:*    users:(("ssh",pid=3000008,fd=4))
LISTEN 0      128         127.0.0.1:50155      0.0.0.0:*    users:(("ssh",pid=3000008,fd=5))
...

解説(sortコマンドのヘルプ抜粋)

  -t, --field-separator=SEP フィールド区切り文字として空白の代わりに SEP を使用する

  -k, --key=KEYDEF          指定されたキーでソートする。
                              KEYDEF では場所と並び替え種別を指定する

KEYDEF は F[.C][OPTS][,F[.C][OPTS]] の書式で、開始位置と停止位置を指定します。
F はフィールド番号で、 C はフィールド内の文字位置です。

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-12-28 (木) 10:10:01