假设我有一个线如何用sed替换整个行?
aaa=bbb
现在一个文件,我想,以取代他们:
aaa=xxx
我能做到这一点,如下所示:
sed "s/aaa=bbb/aaa=xxx/g"
现在我有一个文件中有几行如下:
aaa=bbb aaa=ccc aaa=ddd aaa=[something else]
如何更换全部此行aaa=[something]
使用aaa=xxx
使用sed?
假设我有一个线如何用sed替换整个行?
aaa=bbb
现在一个文件,我想,以取代他们:
aaa=xxx
我能做到这一点,如下所示:
sed "s/aaa=bbb/aaa=xxx/g"
现在我有一个文件中有几行如下:
aaa=bbb aaa=ccc aaa=ddd aaa=[something else]
如何更换全部此行aaa=[something]
使用aaa=xxx
使用sed?
试试这个:
sed "s/aaa=.*/aaa=xxx/g"
g是什么? – 2012-01-11 15:48:33
习惯的力量,在这种情况下它可以被忽略 - 它被用作替代每场比赛的全局替代品,而不是仅替代第一场比赛。在这种情况下,尽管只有第一个匹配,因为'。*'。 – 2012-01-11 15:58:36
Michael J. Barber,'g'将替换的所有regexp实例替换为 – 2017-03-28 19:06:13
像这样:
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
我不认为明确检查bbb,ccc和ddd是OP所想的。 – spinup 2016-05-12 15:22:08
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=
开头的行,但这取决于您。
OS X的'sed'需要'c'后跟一个反斜杠和一个换行符,并且它不会在插入的文本中追加换行符,但可以使用例如'$'/ aaa =/c \\\ NAAA = XXX \ n''。 – user495470 2013-09-29 13:52:32
听起来像是OSX sed中的一个bug ... – 2016-03-28 23:55:55
OSX使用BSD sed – 2016-05-26 17:25:24
[[别的]]是文本文本,还是只是一个占位符?等号后面的东西的可能格式是什么? – ean5533 2012-01-11 15:46:59