在 sed 命令中使用变量而不是值来替换文本文件中的单词
Use variables instead of values in sed commande to replace words in a text file
我必须编辑 /etc/fstab 来更改 /dev/shm 参数的安装选项。
源代码行是:
tmpfs /dev/shm tmpfs size=11g 0 0
我想将 noexec 添加到许多服务器的 /dev/shm 分区的第四个字段(安装选项)。(安装选项的大小不同)
所以我厌倦了这段代码:
获取安装选项的值。我用过:
shmvar=`grep -E '\s/dev/shm\s' /etc/fstab | awk '{ print }'`
输出是:size=11g
sed -i -e '/shm/s/$shmvar/$shmvar,noexec/' /etc/fstab
或
sed -i -e '/shm/s/$shmvar/&,noexec/' /etc/fstab
但是 none 的 sed 命令有效。
当我使用“size=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
但是因为“size”的值在服务器上是不同的,所以我不得不使用变量
非常感谢您的快速帮助。谢谢
使用 GNU awk
。如果第二个字段包含 /dev/shm
,则将 ,noexec
附加到第四个字段。
awk -i inplace 'BEGIN{ OFS="\t" } =="/dev/shm"{ = ",noexec" } { print }' file
输出:
tmpfs /dev/shm tmpfs size=11g,noexec 0 0
我必须编辑 /etc/fstab 来更改 /dev/shm 参数的安装选项。
源代码行是:
tmpfs /dev/shm tmpfs size=11g 0 0
我想将 noexec 添加到许多服务器的 /dev/shm 分区的第四个字段(安装选项)。(安装选项的大小不同) 所以我厌倦了这段代码: 获取安装选项的值。我用过:
shmvar=`grep -E '\s/dev/shm\s' /etc/fstab | awk '{ print }'`
输出是:size=11g
sed -i -e '/shm/s/$shmvar/$shmvar,noexec/' /etc/fstab
或
sed -i -e '/shm/s/$shmvar/&,noexec/' /etc/fstab
但是 none 的 sed 命令有效。
当我使用“size=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
但是因为“size”的值在服务器上是不同的,所以我不得不使用变量
非常感谢您的快速帮助。谢谢
使用 GNU awk
。如果第二个字段包含 /dev/shm
,则将 ,noexec
附加到第四个字段。
awk -i inplace 'BEGIN{ OFS="\t" } =="/dev/shm"{ = ",noexec" } { print }' file
输出:
tmpfs /dev/shm tmpfs size=11g,noexec 0 0