Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 每隔一列合并一次_Awk_Gsub - Fatal编程技术网

Awk 每隔一列合并一次

Awk 每隔一列合并一次,awk,gsub,Awk,Gsub,正在尝试合并中从$3开始的每隔一个tab delim列 NC_044998.1 3757 ref ref ref ref ref ref ref ref ref dev 所以输出是 NC_044998.1 3757 refref refref refref refref refdev 使用 awk'BEGIN{FS=“\t”}{for(i=3;iWithGNUa

正在尝试合并中从
$3开始的每隔一个tab delim列

NC_044998.1     3757    ref     ref     ref     ref     ref     ref     ref     ref     ref     dev
所以输出是

NC_044998.1     3757    refref     refref     refref     refref     refdev
使用


awk'BEGIN{FS=“\t”}{for(i=3;iWithGNUawk:

awk 'BEGIN {FS=OFS="\t"} { for (i=0; i<5; i++){$(i+3)=$(i*2+3) $(i*2+4)} NF=7; print }' input

awk'BEGIN{FS=OFS=“\t”}{对于(i=0;i使用
gnu-awk
,可以使用正则表达式:

awk -F '\t' -v beg=2 '{
   s=""
   for (i=1; i<=beg; ++i)
      s = s $i FS;
   print s gensub( /\t+(\S+\t*)/, "\\1", "g", substr($0, length(s)+1) )
}' file

PS:您可以在此awk命令中将任何其他列位置作为
beg
参数

如果使用
\t
作为列分隔符,则列本身不能再包含分隔符。谢谢!事实上,我的文件有53列,我想开始从第32列开始彼此合并。因此它将成为awk'BEGIN{FS=“\t”}{for(i=0;iI假设:
awk-v start=32-v end=53'{FS=OFS=“\t”}{for(i=0;i)
NC_044998.1     3757    refref  refref  refref  refref  refdev
awk -F '\t' -v beg=2 '{
   s=""
   for (i=1; i<=beg; ++i)
      s = s $i FS;
   print s gensub( /\t+(\S+\t*)/, "\\1", "g", substr($0, length(s)+1) )
}' file
NC_044998.1  3757   refref  refref  refref  refref  refdev