sed 交換の問題

sed 交換の問題

私のファイルには次のものが含まれています。

$Param_T=ABC49_SA_T2
$Param_V=ABC49BC_SA_V2
$Param_ST=ABC491_SA_M2

ABC * _で始まる値をXYZ12_に置き換えようとしています。

sed -i 's/ABC\.*_/XYZ12_/g' INCR.parm

上記は私が使用したsedコマンドです。エラーは発生しませんでしたが、値は変更されませんでした。誰でもこの問題を解決するのに役立ちますか?

ベストアンサー1

sed を使用して貪欲でない一致を達成する方法は、文字セットを指定することです。いいえ一致させたい項目:

sed -i 's/=ABC[^_]*_/=XYZ12_/g' INCR.parm

つまり、「ABC」の後にアンダースコアではなく、ゼロ個以上の文字とアンダースコアが続くものと一致します。

この時点から出ることはできません。 「ネイキッド」ドットは「すべての文字と一致」を意味し、エスケープドットは「リテラルドットと一致」を意味します。リテラル文字列「ABC」に一致するデータがないため、置換は行われませんでした。

おすすめ記事