2013-02-15 210 views
0

我不明白这个脚本是如何工作的,下面的命令是什么意思?Linux shell了解

sed -n '/Domain Summary: Message Delivery/,/Domain Summary: Messages Received/p' test_mx1 | grep "yahoo.com" 

下面太

sed -n '/Domain Summary: Messages Received/,/Senders by message count/p' test_mx1 | grep "yahoo.com" 

我无法理解这些命令。

+0

'man sed;人grep' – chepner 2013-02-15 14:05:14

回答

0

sed正在做ranges by patterns为一个文件,然后Linux管道sed的输出到grepgrep正在打印具有yahoo.com的字符串。

1

脚本正在处理文件test_mx1sed-n选项意味着'不要打印每一行'(它通常会这样做)。

'/Domain Summary: Message Delivery/,/Domain Summary: Messages Received/p' 

这看起来含有Domain Summary: Message Delivery一条线,并从该线直至含有Domain Summary: Messages Received打印出每一行的线。如果它找到与第一行匹配的另一行,则它会再次开始打印。

sed的命令的输出然后由grep所以只有包含yahoo.com(或yahooXcom任意字符X)被打印的行过滤。

grep可以被省略:

fr_line="Domain Summary: Message Delivery" 
to_line="Domain Summary: Messages Received" 
sed -n "/$fr_line/,/$to_line/{/yahoo.com/p;}" test_mx1 

第二个例子是几乎相同;这些模式是不同的,但是在其他方面,命令是相同的。