【发布时间】:2020-07-09 22:53:58
【问题描述】:
我正在尝试更改如下所示的文件:
>sample_A#Dakota
text
text
text
>text_2#Idao
text
text
text
>junk_1#Alabama
text
text
text
>example_4#Dakota
text
text
text
>example5#Honduras
text
text
text
到一个看起来像这样的文件:
>model_1#Dakota
text
text
text
>model_2#Idao
text
text
text
>model_3#Alabama
text
text
text
>model_4#Dakota
text
text
text
>model_5#Honduras
text
text
text
所以,我需要找到 > 和 # 之间的文本,并将其替换为“model”,后跟一个递增的数字。我找到了一些仅针对单独做这些事情的答案,但我无法将它们结合起来。我想使用 bash,使用 sed 或 awk 之类的单行答案。 我试过这个:
awk 'BEGIN { cntr = 0 } />/,/#/ { cntr++ ; print "model", cntr } !/>/,/#/ { print $0 }' infile
但我得到了这个:
model 1
text
text
text
model 2
>text_2#Idao
text
text
text
model 3
>junk_1#Alabama
text
text
text
model 4
>example_4#Dakota
text
text
text
model 5
>example5#Honduras
text
text
text
提前致谢, T
【问题讨论】:
-
/regexp1/,/regexp2/语法用于定义与这些正则表达式匹配的行组,而不是用于单行匹配.. 应改为/>.*#/