web-dev-qa-db-ja.com

行全体をsedに置き換える方法は?

行があるファイルがあるとします

aaa = bbb

今、私はそれらを次のものに置き換えたいと思います:

aaa = xxx

次のようにできます。

sed "s/aaa = bbb/aaa = xxx/g"

これで、次のような数行のファイルができました。

aaa = bbb 
 aaa = ccc 
 aaa = ddd 
 aaa = [その他]

sedを使用してallこの行aaa=[something]aaa=xxxに置き換えるにはどうすればよいですか?

92
Michael

これを試して:

sed "s/aaa=.*/aaa=xxx/g"
158
John Doyle

Sedの変更行を使用してこれを実現することもできます。

sed -i "/aaa=/c\aaa=xxx" your_file_here

これにより、aaa=テストに合格する行がすべて検索されます。つまり、行にaaa=という文字が含まれています。次に、行全体をaaa = xxxに置き換えます。テストの最初に^を追加して、aaa=で始まる行のみを取得するようにすることができますが、それはあなた次第です。

85
Mr. T

このような:

sed 's/aaa=.*/aaa=xxx/'

aaa=が行の先頭にあることを保証する場合は、次のようにします。

sed 's/^aaa=.*/aaa=xxx/'
39
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
3
Vijay

awkを使用したい場合、これも動作します

awk -F= '{$2="xxx";print}' OFS="\=" filename
2
jaypal singh

これはあなたのために働くかもしれません:

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
1
potong