使用sed命令中的变量而不是值来替换文本文件中的单词



我必须编辑/etc/fstab来更改/dev/shm参数的安装选项。

源行是:

tmpfs                   /dev/shm                tmpfs   size=11g        0 0

我想在许多服务器的/dev/shm分区的第四个字段(挂载选项(中添加noexec。(安装选项中有不同尺寸(所以我长篇大论地讲了这个代码:获取安装选项的值。我用过:

shmvar=`grep -E 's/dev/shms' /etc/fstab | awk '{ print $4 }'`

输出为:size=11g

sed -i -e '/shm/s/$shmvar/$shmvar,noexec/' /etc/fstab

sed -i -e '/shm/s/$shmvar/&,noexec/' /etc/fstab

但是sed命令都不起作用。

而我使用";尺寸=11g";而不是"$shmvar";它起作用:

 sed -i -e '/shm/s/size=11g/size=11g,noexec/' /etc/fstab
OR
sed -i -e '/shm/s/size=11g/&,noexec/' /etc/fstab

但是因为";尺寸";服务器中的值不同,我必须使用变量

非常感谢您的快速帮助。感谢

使用GNUawk。如果第二个字段包含/dev/shm,则将,noexec附加到第四个字段。

awk -i inplace 'BEGIN{ OFS="t" } $2=="/dev/shm"{ $4=$4 ",noexec" } { print }' file

输出:

tmpfs/dev/shm-tmpfs大小=11g,noexec 0 0

相关内容

  • 没有找到相关文章

最新更新