我想在每次出现以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"£$^
答案 0 :(得分:1)
请您尝试以下操作(由于未提供示例,因此无法测试)。
awk '/^A/ || /^T/ || /^G/ || /^C/{print $0 ORS;next} 1' Input_file
OR
awk '/^A|^T|^G|^C/{$0=$0 ORS} 1' Input_file
如果您需要在新行中打印+
,然后在上述代码中将ORS
更改为ORS "+"
。
答案 1 :(得分:1)
awk '1; /^[ATGC]/{print "+"}' file
答案 2 :(得分:0)
另一个awk
awk ' /^[ATGC]/ { $(NF+1)="\n+" }1 '
具有给定的输入
$ cat giles.txt
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
"£%&"!!""^!35£$^12357"£$^
$ awk ' /^[ATGC]/ { $(NF+1)="\n+" }1 ' giles.txt
1242345£$$%&£2345235%$^
@asjksfkjcke-vse-segsgs-
AGCTGCTAGGCTAGCCAACTG
+
1263£%&££1124$^&&"£2112123423%%
@asdasasf--sd--sdgsdga-
GCTAGCCTAGGCTTCGAGGCCCCGATTC
+
"£%&"!!""^!35£$^12357"£$^
$