Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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,我有个问题。我有三个字符序列。每一个都有300个字符,它们在不同的文件中。我想在60年代把它们分开,合并成一个。 字符是不同的字母和字母*-+ 这就是我的问题所在: 1.txt 2.txt 3.txt 我想把它们分成三部分,并将这三个文件合并成一个4.txt文件 期望输出: aaa vvv ccc aaa vvv ccc a v C 非常感谢您提供的任何帮助使用GNU awk for ARGC、argid和FS=: $ cat tst.awk BEGIN{ FS=""; charsInGr

我有个问题。我有三个字符序列。每一个都有300个字符,它们在不同的文件中。我想在60年代把它们分开,合并成一个。 字符是不同的字母和字母*-+

这就是我的问题所在:

1.txt

2.txt

3.txt

我想把它们分成三部分,并将这三个文件合并成一个4.txt文件

期望输出:

aaa
vvv
ccc

aaa
vvv
ccc

a
v
C

非常感谢您提供的任何帮助

使用GNU awk for ARGC、argid和FS=:

$ cat tst.awk
BEGIN{ FS=""; charsInGrp=3 }
{
    numRows=0
    for (grpNr=1;grpNr<=NF;grpNr+=charsInGrp) {
        ++numRows
        for (delta=0; delta<charsInGrp; delta++) {
            charGrp[ARGIND,numRows] = charGrp[ARGIND,numRows] $(grpNr+delta)
        }
    }
}
END {
    for (rowNr=1;rowNr<=numRows;rowNr++) {
        for (fileNr=1;fileNr<ARGC;fileNr++) {
            print charGrp[fileNr,rowNr]
        }
        print ""
    }
}
$
$ awk -f tst.awk 1.txt 2.txt 3.txt
aaa
vvv
ccc

aaa
vvv
ccc

a
v
c

只需将charsInGrp=3更改为您喜欢的任何值,例如60。

不清楚您想要什么。此外,正如您所指出的awk,这意味着您知道此工具可以实现。那么,到目前为止你试过什么?你可能已经接近解决方案了。-1问题。如果你有问题问别人,你应该尽力把问题解释清楚。通过阅读你的问题,没有人会知道你到底想要什么。例如,文件1有7个a,文件2有7个v文件3有6个c为什么删除了一个a/v?哪一个应该被移除?你的输入总是同一个字母吗?它们可能是多行的吗?分割成多个部分的规则是什么?肯特:对不起,我想我的帖子现在更清楚了。
ccccccc
aaa
vvv
ccc

aaa
vvv
ccc

a
v
C
$ cat tst.awk
BEGIN{ FS=""; charsInGrp=3 }
{
    numRows=0
    for (grpNr=1;grpNr<=NF;grpNr+=charsInGrp) {
        ++numRows
        for (delta=0; delta<charsInGrp; delta++) {
            charGrp[ARGIND,numRows] = charGrp[ARGIND,numRows] $(grpNr+delta)
        }
    }
}
END {
    for (rowNr=1;rowNr<=numRows;rowNr++) {
        for (fileNr=1;fileNr<ARGC;fileNr++) {
            print charGrp[fileNr,rowNr]
        }
        print ""
    }
}
$
$ awk -f tst.awk 1.txt 2.txt 3.txt
aaa
vvv
ccc

aaa
vvv
ccc

a
v
c