我正在尝试使用Shell脚本替换txt文件中的特定行,例如:
cat aa.txt:
auditd=0
bladeServerSlot=0
当我运行脚本时,我想将"bladeServerSlot"更改为12,如下所示:
cat aa.txt:
auditd=0
bladeServerSlot=12
你能帮我一下吗?
sed
和反向引用:sed -r '/bladeServerSlot/ s/(^.*)(=.*)/\1=12/g' inputfile
awk
命令,可以搜索包含 bladeServerSlot
的行,并替换该行的第二列。awk 'BEGIN{FS=OFS="="}/bladeServerSlot/{$2=12}1' inputfile
/^bladeServerSlot/s/=.*$/=12/
。 - William Pursell你真的需要替换示例中的那行吗?由于 bladeServerSlot
是一个变量,你可以重置其值。
bladeServerSlot=`any command`
或者你可以让这个变量由提供给此脚本的参数填充。
bladeServerSlot=$1
使用$1
作为脚本的第一个参数。我认为这是比在此处使用复杂的正则表达式更清晰解决问题的方法。sed/perl的解决方案可以工作,但对于阅读你的脚本的其他人来说并不太清晰。
perl -pe 's/bladeServerSlot=0/bladeServerSlot=12/' aa.txt
。 - Sobrique