2011-06-07 25 views
3

這個腳本從電子郵件的日期字段剝掉時區:如何僅將sed腳本應用於電子郵件的標題?

#!/bin/sed -rf 
s/(^Date: (Sun|Mon|Tue|Wed|Thu|Fri|Sat),.*[0-9][0-9]:[0-9][0-9]:[0-9][0-9]) \+0900$/\1/i 

但是,我並不希望在一個日期出現在電子郵件的正文中的時區剝離做。 遇到雙換行符後,如何讓sed退出(指示電子郵件頭字段的結尾)? 我如何才能將替換僅應用於電子郵件的標題?這在sed中可能嗎? awk解決方案也是可以接受的。

更新:

我想出如何戒菸的sed像我想通過匹配一個空行:

/^$/q 

不過,我並沒有真的想退出,因爲的身體然後,電子郵件不打印。

回答

1

你可能可以使用分支功能來做到這一點,並讓分支進行正常打印。 /^$/b x

#!/bin/sed -rf 
x 
/^MAGICTOKEN$/b body 
x 
s/(^Foo: bar).*/\1/i 
p 
s/^$/MAGICTOKEN/ 
/^MAGICTOKEN$/x 
d 

: body 
x 
p 
d 

當然,如果我真的這樣做,我會用perl。