如何用sed替换整线?

时间:2012-01-11 15:40:39

标签: regex sed

假设我有一个带行的文件

aaa=bbb

现在我想用以下代码替换它们:

aaa=xxx

我可以这样做:

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

现在我有一个包含以下几行的文件:

aaa=bbb
aaa=ccc
aaa=ddd
aaa=[something else]

如何使用 sed 所有aaa=[something]替换为aaa=xxx

6 个答案:

答案 0 :(得分:157)

试试这个:

sed "s/aaa=.*/aaa=xxx/g"

答案 1 :(得分:83)

您还可以使用sed的更改行来完成此任务:

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

这将通过并找到通过aaa=测试的任何行,这意味着该行包含字母aaa=。然后用aaa = xxx替换整行。您可以在测试开始时添加^,以确保只获得以aaa=开头的行,但这取决于您。

答案 2 :(得分:39)

像这样:

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

如果您想保证aaa=位于该行的开头,请将其设为:

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

如果您想使用awk,那么这也可以使用

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

答案 5 :(得分:1)

这可能对您有用:

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