sed 命令的不解之处,求解释!

皮皮大仙 发布于 2012/04/17 23:14
阅读 275
收藏 1
sed

例子 A-12. behead: 去掉信件与新消息的头

#! /bin/sh
# Strips off the header from a mail/News message i.e. till the first
# empty line
# Mark Moraes, University of Toronto

# ==> These comments added by author of this document.

if [ $# -eq 0 ]; then
# ==> If no command line args present, then works on file redirected to stdin.
	sed -e '1,/^$/d' -e '/^[ 	]*$/d'
	# --> Delete empty lines and all lines until 
	# --> first one beginning with white space.
else
# ==> If command line args present, then work on files named.
	for i do
		sed -e '1,/^$/d' -e '/^[ 	]*$/d' $i  
            ###后面的 '/^[       ]*$/d' 是什么意思啊,久看不能理解啊,感觉和
            ###这例子自己的注释没什么关系 
		# --> Ditto, as above.
	done
fi

# ==> Exercise: Add error checking and other options.
# ==>
# ==> Note that the small sed script repeats, except for the arg passed.
# ==> Does it make sense to embed it in a function? Why or why not?
加载中
0
中山野鬼
中山野鬼

/^[       ]*$/ ^ 从行开头,  $到行尾, 【 】 表示空格或TAB, *是任意的。


从行开始,存在任意个空格或TAB,而且一直到了行屁股。换句话说,就是一行除了空格或TAB没其他正经玩意。

中山野鬼
中山野鬼
回复 @wanbo : *表示前面的情况出现的次数是任意的。
皮皮大仙
皮皮大仙
一行中除了空格或TAB没有其他玩意了?那——*——是用来干什么的呢?——*——不是可以匹配任意字符吗?如果这样,/^[ ]*$/d和/^$/d有什么区别呢?
0
中山野鬼
中山野鬼
整体的意思就是没有参数的话,会从stdin进来的数据进行编辑,否则循环处理每个命令行后参数对应的文件。
返回顶部
顶部