入力ファイルに次の行があり、「=」記号の後のすべてのテキストを新しい文字列(「good」など)に置き換えたいと思います。
繰り返しますが、行内の特定の文字列に対してのみこれを実行したいと思います。
入力ファイル:
$myvar1=var1
$myvar2=var2
$myname=name
$myage=age
$mycity=city
結果ファイル:
$myvar1=var1
$myvar2=var2
$myname=good
$myage=good
$mycity=good
答え1
私はsedがあなたが望むものに適したツールだと思います。ここに私が実装したものがあります。私は何かを探しているのではなく、あなたが保護しているものを否定することです。
sed -r '/^((\$myvar1)|(\$myvar2))/!s/=.*$/="good"/g'
答え2
最初の2行をスキップするには、次のものを使用できます。
sed '3,$s/=.*/=good/' file
これにより、3行から最後の行()までの$
交換が行われます。
答え3
これはあなたが望むものですか? GNU sedを使用してください。
sed -E '/var[0-9]/!s/(=).*/\1good/' file
答え4
$myname
変更したい変数名(たとえば、、など)を事前に知っていると仮定すると、次のようになり$myage
ます。$mycity
sed
sed -i '/^\$myname=/s/=.*$/=good/g' input_file_name
sed -i '/^\$myage=/s/=.*$/=good/g' input_file_name
sed -i '/^\$mycity/s/=.*$/=good/g' input_file_name
デフォルトでは、これは特定の一致(または^\$myname=
)で始まる行でのみ正規表現を実行し、等号の後にあるすべての項目を等号とその文字列()に置き換えることを意味します。^\$myage=
^\$mycity=
=.*$
=good
-i
注:そのバージョンでこのオプションを使用できない場合は、sed
同じ効果を得るために次の方法を検討してください。
sed '/^\$myname=/s/=.*$/=good/g' input_file_name > output_file_name
sed '/^\$myage=/s/=.*$/=good/g' input_file_name > output_file_name
sed '/^\$mycity/s/=.*$/=good/g' input_file_name > output_file_name