行があるファイルがあるとします
aaa = bbb
今、私はそれらを次のものに置き換えたいと思います:
aaa = xxx
次のようにできます。
sed "s/aaa = bbb/aaa = xxx/g"
これで、次のような数行のファイルができました。
aaa = bbb aaa = ccc aaa = ddd aaa = [その他]
sedを使用してallこの行aaa=[something]
をaaa=xxx
に置き換えるにはどうすればよいですか?
これを試して:
sed "s/aaa=.*/aaa=xxx/g"
Sedの変更行を使用してこれを実現することもできます。
sed -i "/aaa=/c\aaa=xxx" your_file_here
これにより、aaa=
テストに合格する行がすべて検索されます。つまり、行にaaa=
という文字が含まれています。次に、行全体をaaa = xxxに置き換えます。テストの最初に^
を追加して、aaa=
で始まる行のみを取得するようにすることができますが、それはあなた次第です。
このような:
sed 's/aaa=.*/aaa=xxx/'
aaa=
が行の先頭にあることを保証する場合は、次のようにします。
sed 's/^aaa=.*/aaa=xxx/'
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
awk
を使用したい場合、これも動作します
awk -F= '{$2="xxx";print}' OFS="\=" filename
これはあなたのために働くかもしれません:
cat <<! | sed '/aaa=\(bbb\|ccc\|ddd\)/!s/\(aaa=\).*/\1xxx/'
> aaa=bbb
> aaa=ccc
> aaa=ddd
> aaa=[something else]
!
aaa=bbb
aaa=ccc
aaa=ddd
aaa=xxx