Bashスクリプトはファイルのレコードを繰り返し、条件に基づいて値を抽出します。

Bashスクリプトはファイルのレコードを繰り返し、条件に基づいて値を抽出します。

次のクエリが役立つ場合はありがとうございます。 Bashスクリプトが必要です。私はこのスクリプト技術に初めて触れました。

どこかに次のファイルがあります。ファイル名がMemberFile.txtであるとしましょう。

#
[ID          ]  #1
[ADDRE1      ]  Address Line #1
[ADDRE2      ]  Mumbai City
[ADDRE3      ]  India
#
[ID          ]  #2
[ADDRE1      ]  House No 2
[ADDRE3      ]  Green Society
[ADDRE4      ]  Kolkatta
#
[ID          ]  #3
[ADDRE1      ]  Plot Num 77
[ADDRE2      ]  House No # [567]
[ADDRE3      ]  greener Apt
#

これらのファイルには何百万ものレコードがあります。各レコードをすばやく繰り返しインポートして保存したいです[ADDRE3 ]。また、レコードに「society」または「Num」という単語が含まれていることを確認してください(大文字と小文字を区別しない)。その場合、[ID ]そのレコードのタグ値を取得します。

予想される出力は#2と#3です。

下の1はレコードを表します。

[ID          ]  #1
[ADDRE1      ]  Address Line #1
[ADDRE2      ]  Mumbai City
[ADDRE3      ]  India

ベストアンサー1

アッ解決策:

awk -v IGNORECASE=1 '/\[ID /{ r=$3; c=3; next }c-- && $0~/society/{ print r }' MemberFile.txt

出力:

#2
#3

  • IGNORECASE=1- 大文字と小文字を区別しない比較モードの設定

  • /\[ID /{ r=$3; c=3; next }-IDレコード番号の取得#<number>(3番目のフィールドへ)

  • c-- && $0~/society/- 次の3つのレコードにsociety単語が含まれていることを確認してください。

おすすめ記事