2009-10-20 32 views
0

文件1的字符串:如何使用SED刪除與通配符

<a>hello</b> <c>foo</d> 
<a>world</b> <c>bar</d> 

是文件這樣的工作對一個例子。如何刪除所有使用sed的<c>*</d>的字符串?

+0

你是什麼意思的「刪除所有字符串」?你的意思是刪除整行或僅僅是文本塊? – 2009-10-20 07:02:11

+0

所有以開頭並以結尾的字符串。下面的命令完美工作。顯然,任何使用該命令的人都需要在命令末尾添加文件。 – user191960 2009-10-20 07:07:05

回答

4

下面一行將刪除<c>所有文字</d>包括:

sed -e 's/<c>.*<\/d>//' 

s/...//內的位是正則表達式,沒有真正以同樣的方式作爲外殼使用通配符,所以任何你可以放入一個正則表達式,你可以放在那裏。

+0

完美的作品!請記住,此命令的用戶在最後添加輸入/輸出文件以重定向sed:sed -e's/。* <\/d> //'In> Out。 – user191960 2009-10-20 07:12:49

0

如果所有的數據就是這樣的例子

# gawk 'BEGIN{FS=" <c>"}{print $1}' file 
<a>hello</b> 
<a>world</b> 
0

大瑞士軍刀的!

我修改了它,以便爲歸檔腳本從eMails中提取標題信息。它涉及用日期和發件人信息重命名IMAP電子郵件(否則IMAP只是編號爲1,2,3等)。這裏有兩個器官功能障礙綜合徵:

for i in $mailarray; do date -d $(less -f $i | grep -im 1 "Date:\ " | sed -e 's_^.*\(ate: \)__') +%F_%T%Z; done

for i in $mailarray; do less -f "$i" | grep -iEm 1 "From:\ " | sed -e 's_^.*\(rom\).*<\|^.*\(rom:\).__' | sed -e '[email protected]*$__'; done

他們保存的外來編碼很大。謝謝。