ファイルの一部でのみ文字列を検索する(例:grep -q)

ファイルの一部でのみ文字列を検索する(例:grep -q)

設定ファイルに文字列があるかどうかを確認するためにBashを作成したいと思います。ファイル形式を変更できません。他のアプリケーションに属しています。

ファイルは、角かっこ内の文字列で指定されたグループに細分化されます。

これは成功するはずです。

[group1]
MyParameter
junk1
junk2

[group2]
junk3
junk4

以下はエラーです。

[group1]
junk1
junk2

[group2]
MyParameter
junk3
junk4

grep -qファイルにそのファイルがあるかどうかを確認するには、aを実行できますが、そのファイルが内のグループとは異なるグループにMyParameterある場合は、group1エラーが発生します。

両方のグループに存在する場合、MyParameterエラーがgroup1

行番号(頭、尾など)には依存できません。またgroup2、名前に依存しないほど一般的であれば良いでしょう(スクリプトは角かっこで始まり、終わり、前のセットを終了する別の行を見つけた場合にのみわかります)。

ベストアンサー1

テキスト処理に問題があるたびに、誰かが「awkを使用しよう」と言います。一般的に解決策があります。

awk '
    /^\[.*\]$/ {group = $0}
    group == "[group1]" && $1 == "MyParameter" {found=1; exit}
    END {exit !found}
'

おすすめ記事