当字符超过 511 时,为什么粘贴命令不适用于按列连接两个文件?

当字符超过 511 时,为什么粘贴命令不适用于按列连接两个文件?

我正在使用粘贴命令来连接两个.csv文件按列排列。这两个文件都是巨大的文件,当我运行粘贴命令如下,其中逗号(,)为分隔符:

paste -d',' file1.csv file2.csv > file3.csv

该命令无法给出输出

paste: line too long

但是,我也在互联网和粘贴命令的手册中搜索了相同的内容。我发现了以下诊断。

"line too long"         Output lines are restricted  to  511
                         characters.

那么有没有其他方法可以得到结果呢?

我正在使用以下版本的 bash:

GNU bash, version 3.2.57(1)-release (sparc-sun-solaris2.10)

答案1

尝试这个命令

nawk '{if ((getline a < "-") > 0) $0 = $0 "," a; print}' file1.csv < file2.csv > file3.csv

此命令将逐行浏览您的file1.csv和并保存来自infile2.csv的行(对于 nawk匹配孔行、第一列、第二列...)并将来自变量 的行保存。之后它将打印(文件 1 中的行),然后打印“,”,然后(文件 2 中的行)file1.csv$0$0$1$2file2.csva$0afile3.csv

答案2

将文件重定向到新的文件句柄并在从输入读取时从中读取:

#! /bin/bash
exec 3< file1
while read -r two ; do
    read -r -u3 one
    echo "$one,$two"
done < file2

答案3

问题是Solaris提供的工具不如GNU工具。如果可能的话,您应该安装它们。如果没有,可能有更好pastexpg4

相关内容