我正在尝试用我的shell脚本替换txt文件中的特定行,例如;
cat aa.txt:
auditd=0
bladeServerSlot=0
当我运行我的脚本时,我想更改" bladeServerSlot"如下12;
cat aa.txt:
auditd=0
bladeServerSlot=12
你能帮我吗?
答案 0 :(得分:2)
perl -pe 's/bladeServerSlot=\K\d+/12/' aa.txt > output.txt
\K
是particular form的positive lookbehind,它会丢弃之前的所有匹配项。所以我们只需要替换下面的内容。 s/
默认应用于$_,其中包含当前行。 -p
为每一行打印$_
,因此会复制所有其他行。我们将输出重定向到文件。
答案 1 :(得分:0)
使用sed
和反向引用:
sed -r '/bladeServerSlot/ s/(^.*)(=.*)/\1=12/g' inputfile
使用awk
,这将搜索包含bladeServerSlot
的行并替换该行的第二列。
awk 'BEGIN{FS=OFS="="}/bladeServerSlot/{$2=12}1' inputfile
答案 2 :(得分:-1)
是否真的有必要更换示例中的行?由于bladeServerSlot
是一个变量,您可以重置该值。
bladeServerSlot=`any command`
或者你可以让这个变量由提供给这个脚本的参数填充。
bladeServerSlot=$1
$1
是您脚本的第一个参数。我认为这将是一个更清洁的方式解决你的问题,而不是在这里做花哨的正则表达式。 sed / perl解决方案可行,但对于阅读脚本的其他人来说,它们并不十分清楚。