awk,基于前一行开始范围的换行插入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk,基于前一行开始范围的换行插入相关的知识,希望对你有一定的参考价值。
我希望在每次出现以A,T,G或C开头的行后插入一个仅包含+的新行
我可以使用下面的代码一次执行此操作(示例代码仅适用于以A开头的行):
awk 'a=/^A/{b=1}b&&!a{print "+";b=0}1'
你如何制作这样的awk命令需要几个选项来启动一行?即A或T或G或C.
示例输入:
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
"£%&"!!""^!35£$^12357"£$^
输出:
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
+
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
+
"£%&"!!""^!35£$^12357"£$^
答案
您可以尝试一下(由于未提供样品,因此无法测试)。
awk '/^A/ || /^T/ || /^G/ || /^C/{print $0 ORS;next} 1' Input_file
要么
awk '/^A|^T|^G|^C/{$0=$0 ORS} 1' Input_file
如果您需要在新行中打印+
,请在上面的代码中将ORS
更改为ORS "+"
。
另一答案
awk '1; /^[ATGC]/{print "+"}' file
另一答案
另一个awk
awk ' /^[ATGC]/ { $(NF+1)="
+" }1 '
给定的输入
$ cat giles.txt
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
"£%&"!!""^!35£$^12357"£$^
$ awk ' /^[ATGC]/ { $(NF+1)="
+" }1 ' giles.txt
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
+
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
+
"£%&"!!""^!35£$^12357"£$^
$
以上是关于awk,基于前一行开始范围的换行插入的主要内容,如果未能解决你的问题,请参考以下文章