Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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 - Fatal编程技术网

Awk 将文件内容合并到新文件中

Awk 将文件内容合并到新文件中,awk,Awk,我有一些文本文件,如下所示。我想把这些文件的内容合并成一个文件 归档 >AXC 145 146 147 >SDF 1 8 67 >FGH 文件B >AXC >SDF 12 65 >FGH 123 156 190 期望输出 新文件 >AXC 145 146 147 >SDF 1 8 67 12 65 >FGH 123 156 190 谢谢你的帮助 awk' awk ' /^>/ {

我有一些文本文件,如下所示。我想把这些文件的内容合并成一个文件

归档

>AXC
145
146
147
>SDF
1
8
67
>FGH     
文件B

>AXC
>SDF
 12
 65
>FGH
 123
 156
 190
期望输出

新文件

>AXC
145
146
147
>SDF
 1
 8
 67
 12
 65
>FGH
 123
 156
 190    
谢谢你的帮助

awk'
awk '
    /^>/ { key=$0; if (!seen[key]++) keys[++numKeys] = key; next }
    { vals[key] = vals[key] ORS $0 }
    END{ for (keyNr=1;keyNr<=numKeys;keyNr++) {key = keys[keyNr]; print key vals[key]} }
' fileA fileB
>AXC
145
146
147
>SDF
1
8
67
 12
 65
>FGH
 123
 156
 190
/^>/{key=$0;如果(!seen[key]++)keys[++numKeys]=key;next} {vals[key]=vals[key]或$0}
END{for(keyNr=1;keyNr比Ed的答案短一点

awk '/^>/{a=$0;next}{x[a]=x[a]$0"\n"}END{for(i in x)printf"%s\n%s",i,x[i]}'
块将按未指定的顺序打印。

  • RS=“>”
    字符分隔记录
  • OFS=“\n”
    是在自己的行中有编号
  • a[i]=a[i]$0
    使用第一个字段的索引将字段添加到数组中
  • rt=rt
    用于将
    字符添加到索引中


请添加一些解释。仅代码的答案对未来的读者不太有用,不要解释OP的错误或如何解决问题。
$ awk 'BEGIN{ RS=">"; OFS="\n" } 
    {i=rt $1; $1=""; a[i]=a[i] $0; rt=RT; next} 
    END { for (i in a) {print i a[i] }}' d6 d5

>SDF
12
65
1
8
67
>FGH
123
156
190
>AXC
145
146
147