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,基于前一行开始范围的换行插入的主要内容,如果未能解决你的问题,请参考以下文章

JTable中的换行,右对齐,自动调整行高

基于最大值的换行/溢出数的算法

菜鸟随笔---WindowsUnixMac不同操作系统的换行问题 回车符 和换行符

防止 CSS 布局中的换行

获取 QTextEdit 的换行

WindowsUnixMac不同操作系统的换行问题-剖析回车符 和换行符