见见这4个sed命令

看看这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去掉


学习了。
单引号是强引用,对里面的引用不做扩展。双引号可以扩展变量


每个都动手试试

探讨

引用:

学习了。
单引号是强引用,对里面的引用不做扩展。双引号可以扩展变量

为什么sed手册没有体现这一点?难道是shell命令的通用语法?

见见这4个sed命令

相关文章:

你感兴趣的文章:

标签云: