複数の文字列をフィルタリングする方法

複数の文字列をフィルタリングする方法

次の行では、プロトコル、ポート、およびサービスのみをフィルタリングできます。

tcp 127.0.0.1:25  1147/master
tcp 0.0.0.0:443  1039/nginx:
tcp 127.0.0.1:8001  1218/python
tcp 0.0.0.0:10050  939/zabbix_agentd
tcp 127.0.0.1:6379  891/redis-server
tcp 0.0.0.0:80  1039/nginx:
tcp 0.0.0.0:22  889/sshd
tcp 127.0.0.1:5432  929/postmaster
udp 127.0.0.1:323 645/chronyd

私はこれが必要です:

tcp 25 master
tcp 443 nginx
tcp 8001 python
tcp 10050 zabbix_agentd
tcp 6379 redis-server
tcp 80 nginx
tcp 22 sshd
tcp 5432 postmaster
udp 323 chronyd

ベストアンサー1

これはもっと簡単で覚えやすいようです。 AWKのオプション-Fを使用すると、分割する必要がある文字を含む正規表現クラスを提供できます。

awk -F'[ :/]' '{print $1,$3,$5}' file

Steve(以下)は、私が当初考えていたよりも短いアプローチに言及しました。

  • cat file | ...ファイルを一番最後に置く代わりに。
  • ドル項目間のカンマはスペースを追加します。

おすすめ記事