删除定界符之间的文本,每行多次

时间:2019-03-23 01:19:59

标签: regex bash sed non-greedy

我需要删除定界符“ <”和“>”之间的文本,但是在文本文件的每一行上都有多个这些实例。

例如,我要打开它:

person 1, person 2<email2@mail.com>, person 3<email3@mail.com>, person 4<email4@mail.com>`

对此:

person 1, person 2, person 3, person 4  

我尝试使用一些东西,包括sed:

sed -e 's/<.*>//' filename.csv

但是这会删除第一个<和最后一个>之间的所有内容,并给出结果person 1, person 2

2 个答案:

答案 0 :(得分:5)

您可以在正则表达式中使用否定的字符类:

sed 's/<[^>]*>//g' filename.csv

答案 1 :(得分:1)

如果您想加入黑暗面,可以使用Perl用?指定非贪婪的通配符:

perl -pe 's/<.*?>//g' filename.csv