看看这4个sed命令
1、echo $@ | sed "s,-v ,,g; s,-v$,,g"
2、echo "$@" | sed ‘s/ /\ /g’
3、sed -n -e "/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p"
4、sed ‘s,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\1,’
sed参数看起来太繁杂了,有双引号,还有单引号,有逗号,还有分号……
谁能讲讲这4个命令的意思?(需要指出单引号、双引号的不同)。
sed里的s/…/…中的/可以用任何其他符号代替,比如s@…@…和s/…/…是一样的。
所以,你见到的:
1,s/-v//g ,删除所有的-v; s/-v$//g 删除所有结尾的-v。
2, 删除所有的空格
3,有点乱,再说!
4, 替换YYY.XXX.XXX.XXX为YYY,
第三个的意思是,保留include开头行后面括号中的内容。
- Perl code
[www@www ~]$ echo "include ([color=#FF0000]the is the result[/color])"|sed -n -e "/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p"
[color=#FF0000]the is the result[/color]
1
# later cache the command line in config.status
OPT_CMDLINE=`echo $@ | sed "s,-v ,,g; s,-v$,,g "`
多用在configure中,来缓存命令行。基本上可以理解为将-v去掉
学习了。
单引号是强引用,对里面的引用不做扩展。双引号可以扩展变量
每个都动手试试