私は/ etc / hostsファイルを読み込み、ホストファイルで利用可能なIPを決定するスクリプトを書いています。
ホストファイルは次のとおりです。
172.17.164.2 System1
172.17.164.3 System2
172.17.164.4 System3
172.17.164.5 System4
172.17.164.6 System5
172.17.164.7
172.17.164.8
172.17.164.9
172.17.164.10
私の質問は、各行をどのように読み、2番目のフィールドが欠落しているかを確認することです。ホストファイルにホスト名がない場合は、IP を使用できることを意味します。
ベストアンサー1
awk
(タグで提案されているように)を使用して、特定のレコードのフィールド数が1であることを確認できます。 「無料」アドレスのリストを取得するには:
awk '(NF == 1) { print; }' </etc/hosts
/etc/hosts
ファイルにコメントが含まれている場合は、単純すぎる可能性があります。コメント行をスキップしてフィルタリングできます。
awk '/^#/ { next; } (NF == 1) { print; }' </etc/hosts
awk
スクリプトはパターン(または条件)とアクションのペアです。
- 最初のスクリプトで - 数量を
awk
確認してください。NF
フィールド行(デフォルトではスペースで区切り)を入力し、単一のフィールドを使用して各行を印刷します。 /etc/hosts
2番目のスクリプトは、「#」で始まる行を確認し、この行の追加処理をスキップする方法(対応する行にジャンプ)して、コメント付きのファイルの問題を解決しますnext
。