我有这样一句话:
sed -i 's/mystring/newstring/' $target
此命令将所有mystring
更改为newstring
.
我现在想要的是:当程序看到mystring
时,如果字符串searchstring
存在或不存在,我如何判断当前行?如果存在,newstring
是1
;否则,newstring
就是0
.
我有这样一句话:
sed -i 's/mystring/newstring/' $target
此命令将所有mystring
更改为newstring
.
我现在想要的是:当程序看到mystring
时,如果字符串searchstring
存在或不存在,我如何判断当前行?如果存在,newstring
是1
;否则,newstring
就是0
.
假设您的输入文件$target包含以下内容:
some text mystring some other text
some text mystring a searchstring
just some more text
此命令:
sed -i -e '/searchstring/ s/mystring/1/ ; /searchstring/! s/mystring/0/' $target
将其内容更改为:
some text 0 some other text
some text 1 a searchstring
just some more text
该脚本包含两个用分号分隔的替换(s)命令.
替换命令接受一个可选的地址范围,该地址范围 Select 替换应发生的行.
在这种情况下,regexp地址用于为第一个命令 Select 包含searchstring的行;第二行不包含searchstring(注意在regexp否定匹配后的感叹号).
此命令将执行得更好,并产生相同的结果:
sed -i -e '/searchstring/ s/mystring/1/ ; s/mystring/0/' $target
关键是命令是按顺序执行的,因此,如果当前行after中仍然有mystring个子字符串,第一个命令完成,那么肯定没有searchstring子字符串.
感谢用户946850.