已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
4天前关闭。
Improve this question
我想在Unix中合并两个文件,其中字段由管道符号分隔,两个文件都有以下示例格式的数据。
档案一:
AA|AAA|DECIMAL
BB|BBB|varchar2(20)
CC|CCC|Date
档案二:
AA|AAA|varchar2(20)
DD|DDD|varchar2(30)
EE|EEE|Date
预期输出:
AA|AAA|DECIMAL AA|AAA|varchar2(20)
BB|BBB|varchar2(20) MISSING
CC|CCC|Date MISSING
MISSING DD|DDD|varchar2(30)
MISSING EE|EEE|Date
请告诉我如何在unix中实现这一点。Awk或任何命令都可以。提前感谢您的建议。
我尝试使用awk、join和paste命令,但无法获得预期的输出。
1条答案
按热度按时间l7mqbcuq1#
我将利用GNU
AWK
来完成这个任务,如下所示,让file1.txt
内容和
file2.txt
含量是然后
给出输出
说明:我告诉GNU
AWK
字段分隔符(FS
)是管道(|
),然后我构建了二维数组arr
,其中key是(第1列,0
(如果是第一个文件),1
(如果是第二个文件),我储存了整条线($0
)作为值。文件处理完成后,我迭代数组的第一维,如果0
出现在第二维,我使用值,否则MISSING
和如果1
存在于第二维,我使用值MISSING
,否则使用print
,使用默认的单空格输出字段分隔符。如果你想了解更多关于二维数组的信息,请阅读Multidimensional如果您希望将结果输出到
column -t
,即将给予输出