我正在尝试将defaults
替换为defaults,nodev
/
,/home
,/opt
,/tmp
,/var
但defaults
和swap
不应更改proc
设置。
这是/etc/fstab
文件:
/dev/rootvg/swap swap swap defaults 0 0
/dev/rootvg/sysroot / ext3 defaults 1 1
/dev/sda1 /boot ext3 acl,user_xattr 1 2
/dev/rootvg/home /home ext3 defaults 1 2
/dev/rootvg/opt /opt ext3 defaults 1 2
/dev/rootvg/tmp /tmp ext3 defaults 1 2
/dev/rootvg/var /var ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
答案 0 :(得分:2)
我希望这个sed
命令能对你有所帮助
sed '/proc\|swap/!s/defaults/&,nodev/' /etc/fstab
<强>输出:强>
/dev/rootvg/swap swap swap defaults 0 0
/dev/rootvg/sysroot / ext3 defaults,nodev 1 1
/dev/sda1 /boot ext3 acl,user_xattr 1 2
/dev/rootvg/home /home ext3 defaults,nodev 1 2
/dev/rootvg/opt /opt ext3 defaults,nodev 1 2
/dev/rootvg/tmp /tmp ext3 defaults,nodev 1 2
/dev/rootvg/var /var ext3 defaults,nodev 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
注意:强>
如果您想要更改文件使用-i
选项
答案 1 :(得分:1)
您可以使用{
合并两个正则表达式地址:
/^\//{/swap/!s/defaults/defaults,nodev/}
更详细地说:
#!/bin/sed
/^\//{
/swap/!s/defaults/defaults,nodev/
}
因此,在以/
开头的行上,如果该行不包含swap
,则执行替换。
事实上,对于该特定文件,所有磁盘文件系统都是ext3
,因此您可以简化为
/ext3/s/defaults/defaults,nodev/
答案 2 :(得分:0)
您似乎想要更改所有ext3
文件系统的选项。那么你可以:
sed '/ext[2-4]/s/defaults/&,nodev/' file
使用此行,它将在ext2, 3, 4
FS上应用替换。您可以根据需要进行调整,例如: ext3
仅适用于ext3。但是,由于使用了正则表达式,这可能并不总是能给你正确的结果。
如果你必须替换某个挂载点,我会使用awk检查列,我也不会使用正则表达式。