这是另一个示例:我花了一段时间才发现您更改了/
for 分隔符而不是 /
目录路径中的分隔符。
如果您有 dir 路径名,请使用@
而不是/
sed 分隔符。
首先我尝试了这个:
[root@ip-172-35-24-37 ec2-user]# egrep -q "^(\s*\S+\s+)/dev/shm(\s+\S+\s+\S+)(\s+\S+\s+\S+)(\s*#.*)?\s*$" /etc/fstab && sed -ri "s/^(\s*\S+\s+)/dev/shm(\s+\S+\s+\S+)(\s+\S+\s+\S+)(\s*#.*)?\s*$/\1/dev/shm\2nodev\3\4/" /etc/fstab
并得到这个错误:
sed: -e expression #1, char 20: unknown option to `s'
因此,我使用@
了 sed 分隔符而不是/
:
[root@ip-172-35-24-37 ec2-user]# egrep -q "^(\s*\S+\s+)/dev/shm(\s+\S+\s+\S+)(\s+\S+\s+\S+)(\s*#.*)?\s*$" /etc/fstab && sed -ri "s@^(\s*\S+\s+)/dev/shm(\s+\S+\s+\S+)(\s+\S+\s+\S+)(\s*#.*)?\s*$@\1/dev/shm\2nodev\3\4@@" /etc/fstab
[root@ip-172-35-24-37 ec2-user]#
它奏效了。
@
除了分隔符 之外,您还可以使用其他东西,例如!
or?
或%
。/
如果您有目录路径,请不要使用。