仅删除模式而不删除整行

时间:2017-01-06 19:42:26

标签: awk sed

我有一个文本文件,如下所示

 OG1: Panda|Koala_1.2_animals Panda|Koala_extinct Elephant|Ostrich_1_0_mammal_bird
 OG2: Panda|Koala_1.2_animals Panda|Koala_cute Oyster|Ostrich_1_0_seafood_bird
 OG3: Panda|Koala_animals Platypus|Hummingbird_1_0_mammal_bird
 OG4: Platypus|Hummingbird_1_0_mammal_bird

我想删除任何以Panda | Koala开头的单词,直到该空间有多少次出现该模式

 OG1: Elephant|Ostrich_1_0_mammal_bird
 OG2: Oyster|Ostrich_1_0_seafood_bird
 OG3: Platypus|Hummingbird_1_0_mammal_bird
 OG4: Platypus|Hummingbird_1_0_mammal_bird

我尝试使用

sed'/Panda|Koala/d' data.txt

这将删除包含模式

的整行

2 个答案:

答案 0 :(得分:2)

您需要使用空字符串替换,请使用替换命令s/pattern/replacement/

sed 's/Panda|Koala[^ ]* *//g' data.txt

[^ ]表示不是空格的字符g执行该行中所有匹配项的替换。

答案 1 :(得分:1)

awk '{print " "$1,$NF}' file

 OG1: Elephant|Ostrich_1_0_mammal_bird
 OG2: Oyster|Ostrich_1_0_seafood_bird
 OG3: Platypus|Hummingbird_1_0_mammal_bird
 OG4: Platypus|Hummingbird_1_0_mammal_bird