尝试这个:
sed "s/aaa=.*/aaa=xxx/g"
您还可以使用 sed 的更改行来完成此操作:
sed -i "/aaa=/c\aaa=xxx" your_file_here
这将遍历并找到任何通过 aaa=
测试的行,这意味着该行包含字母 aaa=
。然后它将整行替换为 aaa=xxx。您可以在测试的开头添加一个 ^
以确保您只获得以 aaa=
开头的行,但这取决于您。
sed
要求 c
后跟一个反斜杠和一个换行符,并且它不会将换行符附加到插入的文本中,但您可以使用例如 $'/aaa=/c\\\naaa=xxx\n'
。
c
将用一行替换整个范围:'/garbage_start/,/garbage_stop/c\[Garbage skipped]'
s
不这样做。
像这样:
sed 's/aaa=.*/aaa=xxx/'
如果您想保证 aaa=
位于行首,请将其设为:
sed 's/^aaa=.*/aaa=xxx/'
sed 's/aaa=.*/aaa=\'xxx\'/'
一样转义,但这会在新行中打开一个 >
提示...
sed "s/aaa=.*/aaa='xxx'/g"
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
bbb
、ccc
和 ddd
的明确检查并不是 OP 所想的。
不定期副业成功案例分享
.*
,只有第一个会被匹配。g
用替换替换所有正则表达式实例-i
以更改文件