[英]Awk command to format text output with custom record separator and field Separator
[英]AWK join lines between record separator
我是awk的新手,有一个问题。 我有一个文件,该文件使用>作为记录分隔符,并且在记录分隔符下方是随机字符串。 本质上,我想做的是使用awk打印记录分隔符,并连接记录分隔符下方的字符串。
Example file:
input:
>1
AAAA
BB
CCCCCCC
>2
AA
BBBBBBB
CCCC
...
output:
>1
AAAABBCCCCCCC
>2
AABBBBBBBCCCC
...
我有这个awk程序,它在记录分隔符下面有设置的行数时可以工作(如第一个示例所示):
awk 'BEGIN { FS = "\n"; RS = ">" } {print ">"$1 } {print $2$3$4}' file
有没有一种方法可以使用awk解决记录分隔符下方可能出现的任意数量的字符串?
Example:
input:
>1
AAAAAA
BBB
CCCCCCCC
DDDD
FFF
>2
AAAAA
CCC
...
output:
>1
AAAAAABBBCCCCCCCCDDDDFFF
>2
AAAAACCC
...
这是一个awk
awk '/^>/ {print (NR==1?"":RS)$0;next} {printf "%s",$0}' file
>1
AAAAAABBBCCCCCCCCDDDDFFF
>2
AAAAACCC
您可以从2循环到NF
,这是字段数的内置变量。
使用printf()打印它们以避免输出换行符。 然后在记录的末尾用printf()换行。
awk 'BEGIN { FS = "\n"; RS = ">" }
{ print ">"$1 }
{ for(i=2; i<NF; ++i) printf($(i)); }
{ printf("\n"); }' file
awk '
BEGIN {RS=">"; FS="\n"; OFS=""}
NR > 1 {$1 = $1 FS; print RS, $0}
' file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.