我正在使用粘贴命令来连接两个.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
$2
file2.csv
a
$0
a
file3.csv
答案2
将文件重定向到新的文件句柄并在从输入读取时从中读取:
#! /bin/bash
exec 3< file1
while read -r two ; do
read -r -u3 one
echo "$one,$two"
done < file2
答案3
问题是Solaris提供的工具不如GNU工具。如果可能的话,您应该安装它们。如果没有,可能有更好paste
的xpg4
。