如何用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 ?

418408 次浏览

试试这个:

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

是这样的:

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

如果你想保证aaa=是在行开始,使它:

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

如果你想使用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
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file

你也可以使用sed的更改行来完成:

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

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