2009-10-20 72 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

他们保存的外来编码很大。谢谢。