sed删除每行中所有模式的出现

时间:2017-11-17 09:39:10

标签: bash sed

以下命令不会在一行中重复每个出现的过程...

input_file.txt:

<!--:nl-->hond <span>bob</span><!--:fr-->chien <span>bob</span><!--:nl-->kat<!--:fr-->chat
<!--:nl-->hond<!--:fr-->chien<!--:nl-->kat<!--:fr-->chat

错误的sed命令:

sed -e 's/\(\<\!--\:nl\--\>\).*\(\<\!--\:fr\--\>\)/\1\2/g' input_file.txt > output_file.txt

当前output_file.txt结果:

<!--:nl--><!--:fr-->chat

所需的output_file.txt结果:

chien <span>bob</span>chat
chienchat

[编辑] hond,chien,kat和chat可能会在其周围放置HTML标签,需要保留...

2 个答案:

答案 0 :(得分:0)

您可以使用此sed

sed 's/<!--:nl-->[^<]*<!--:fr-->//g' file

答案 1 :(得分:0)

关注awk也可以帮助您。

awk -F'<!--:nl-->|<!--:fr-->' '{print $3$5}'   Input_file

说明: 只需将字符串<!--:nl--><!--:fr-->作为字段分隔符,然后打印第3行和第5列(根据您的输出要求)。