【发布时间】:2021-12-15 11:29:10
【问题描述】:
我正在尝试删除文件中包含特定模式的行以及该特定模式正上方的行。模式是“查询”。该文件如下所示:
1. Query= ENST00000641267.1
2. Query= ENST00000641448.1
3. Query= MSTRG.3294.1
4. Query= ENST00000435134.2
5. Query= ENST00000503142.1
6. Query= ENST00000503142.1
7. Query 8 THSLRYFRLGVSDPIHGVPEFISVGYVDSHPITTYDSVTQQKEPRAPWMAENLVPDHWER 187
8. Query 188 YTQLLKGWQQMFRVELKRQQRHYNHSGSHTYQRMIGCELLEDGSTTGFLQYAYDGQNFLI 367
9. Query 368 FNKDTLS*LAVDNVAHTIKRAREANQHELQYQKNWLEEECIA*LKRFLEYGKDTQQ 535
10. Query= ENST00000612670.1
11. Query 1 MVFTQAPAEIMGHLRICSLLARQCLAEFLGVFVLMLLTQGAVAQAVTSGETKGNFFTMFL 180
12. Query 181 AGSLAVTIAIYVGGNVSG 234
13. Query= MSTRG.3309.1
因此应删除第 6 到 12 行,而应保留所有其他行。我尝试了以下方法来删除模式之前的行,但无法使其正常工作:
tac | sed '/Query /'I, +1 d' | tac file.txt > newfile.txt
它只输出 '>' 符号。 有人可以帮忙吗?
期望的输出是:
1. Query= ENST00000641267.1
2. Query= ENST00000641448.1
3. Query= MSTRG.3294.1
4. Query= ENST00000435134.2
5. Query= ENST00000503142.1
13. Query= MSTRG.3309.1
谢谢!
【问题讨论】:
-
也许您可以使用此答案中的方法来解决与您类似的问题:unix.stackexchange.com/a/29928/438036
-
是删除第6行到第12行还是第6行和第12行?不清楚。
-
为什么只删除第 6-12 行?不过,所有的行都有
Query这个词。 -
@cyrus 和 Itération 122442 我改变了问题
-
这可能对您的示例有所帮助:
tac file | sed '/Query /,/Query=/d' | tac
标签: shell awk sed text-processing