sed命令是否只是将文本内联到第一行?

时间:2017-04-28 23:31:43

标签: bash sed

我正在浏览一个我试图理解的设置脚本;在这种情况下,sed线如何工作。根据我的理解,它是在第一行编辑src/conf-cc内联并将-include /usr/include/errno.h/附加到最后一行输入?我一直在引用sed手册来帮助我打破这个sed命令。

#!/usr/bin/env bash

# A script which installs daemontools
#
# Run as root!
#

if [ "$(id -u)" != "0" ]; then
   echo "You must be root!" 1>&2
   exit 1
fi

mkdir /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xpf daemontools-0.76.tar.gz
rm -f daemontools-0.76.tar.gz
cd admin/daemontools-0.76
sed -i '1s/$/ -include \/usr\/include\/errno.h/' src/conf-cc
package/install
echo -e "start on runlevel [3] \nrespawn \nexec /command/svscanboot" >> /etc/init/svscan.conf

initctl reload-configuration
initctl start svscan

mkdir /var/svc.d

1 个答案:

答案 0 :(得分:3)

不,它只是在第一行附加了一些内容。这是替换命令:

addr s/pattern/replacement/

其中 addr 1(第一行), pattern $(正则表达式:结束(){em> replacement -include ...字符串。它并没有真正“替换”任何东西,因为$无论如何都没有宽度。

您的误解是将$解释为地址而非正则表达式。