私のフォルダに2つのファイルがあるとしましょう。
...
product: Nike New Awesome Running Shoe
price: 123
color: black
...
...
product: Nike New Awesome Salloon Soccer Shoe
price: 123
color: black
...
次のシナリオを完了する必要があります。シングルSEDコマンドの使用, *.txt を使用するすべてのファイルで
Salloon Soccer文字列が含まれている場合は(product:)行を検索する必要があります(これは例であり、他の用語/文字列である可能性があります)。
検索は製品のみを検索する必要があります:LINE
そして、その文字列が含まれている場合にのみ(venue:Interior)を使用して新しい行を作成します。 「検索語」を含まない他のファイルは変更されません。以下の2つのファイルの結果を見てください。
...
product: Nike New Awesome Running Shoe
price: 123
color: black
...
...
product: Nike New Awesome Salloon Soccer Shoe
venue: indoor
price: 123
color: black
...
ベストアンサー1
このファイルが有効なYAMLファイルであると仮定すると、Andrey Kislyukのファイルを使用してyq
ください他の質問に対する私の答え):
yq -y -i '
if (.product | contains("Salloon Soccer")) then
.venue = "indoor"
else
empty
end' *.txt
venue
これにより、最上位フィールドに文字列を含むすべてのファイルに値を含むフィールドが追加されます。このオプションのおかげで、変更はすぐに有効になります。indoor
product
Salloon Soccer
-i