sed替换中&符号,经常用来在原文本行下增加字符串。
例1:
sed -i 's/^touch.*/&\nsysctl -p\nulimit -SHn 65535/' /etc/rc.d/rc.local
注解:此时的&符就相当于前面的字符串touch.* ,\n是换行。也就是在以touch.*为开头的行下添加sysctl -p和ulimit -SHn 65535这两行。如果没有&符,则会把touch.*这一样删掉。
执行结果就是:
touch /var/lock/subsys/local
sysctl -p
ulimit -SHn 65535
例2:
sed -i 's/^[\*|root]/#&/' /etc/security/limits.d/20-nproc.conf
在&符前面有一个#号或者其它符号的情况下,它(&)依旧只代表它前面的字符串,也就是/前面的*|root 。
执行结果就是:
#* soft nproc 4096
#root soft nproc unlimited
在两行前面各加了一个#号。