![文件1](https://linux22.com/image/186298/%E6%96%87%E4%BB%B61.png)
我有两个文件 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
。
您想要做的是数据提取和合并。您在问题文本中对此进行了很好的解释。
假设您有bash
shell,可以使用 提取每个文件第一列的内容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