文件1

文件1

我有两个文件 File-1 和 File-2,其中包含列中的数据。我想创建另一个文件,并将与数据相对应的 File-2 第一列的数据按行复制到 file-1,如下所示。

文件1



A  P
B  Q
C  R


文件2



5.4  9.0
7.4  11.5
9.4  15.7

输出

A=5.4, B=7.4, C=9.4

我希望我的输出以像上面这样的行形式仅用于第一列数据。
我感谢您的帮助!!
提前致谢!!!

答案1

请注意,“连接”(在问题标题中提到)是一种特定操作,其中一个数据集用于从另一个数据集中提取数据(关系连接操作)。这可以使用join实用程序(或使用简短命令)来完成awk

您想要做的是数据提取和合并。您在问题文本中对此进行了很好的解释。

假设您有bashshell,可以使用 提取每个文件第一列的内容cut,然后=使用 合并 作为分隔符paste

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2)
A=5.4
B=7.4
C=9.4

每个<(...)(进程替换)将被替换为临时文件的名称,从该临时文件cut中可以paste读取替换内命令的输出。

然后,您可以将其合并为一个逗号分隔的行,如下所示:

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s -
A=5.4,B=7.4,C=9.4

如果每个逗号后需要空格,sed可以使用:

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s - | sed 's/,/, /g'
A=5.4, B=7.4, C=9.4

请注意,我假设问题中的空行实际上不是数据文件的一部分。您可能需要使用 预处理数据sed '/^[[:blank:]]*$/d',这将删除任何空行或仅包含空格和/或制表符的行。

cut另请参阅和paste(man cut和)的手册man paste

答案2

$ paste file1 file2 | awk '{printf "%s%s=%s", sep, $1, $3; sep=", "} END{print ""}'
A=5.4, B=7.4, C=9.4

相关内容