sed はヘッダー行 + 一致する行を保持します。

sed はヘッダー行 + 一致する行を保持します。

次のことができるsedコマンドが見つかりませんでした(推測できません)。

  • インデックスベースの保持:特定の行(例:ヘッダ)
  • 保持:パターンに一致する行(例:grep)
  • 削除:他の行

最良のアプローチは何ですか?

編集(例):

入力する:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 188.165.65.214:53       0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.2:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN
tcp6       0      0 :::53                   :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:953                 :::*                    LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN

出力:ライン2とパターン7777を維持するように要求した後:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN

ベストアンサー1

sedを使えば簡単にできます。

$ sed -e '2{
  p
  d
}
/7777/!d' file

またはawk:

awk 'FNR==2 || /pattern/' file
  • 2はヘッダーの行番号なので、必要な行番号に変更できます。
  • pattern一致させたいパターンです。

おすすめ記事