linux - 按列匹配并打印到行

标签 linux awk sed

尝试搜索但找不到任何实质内容

我有 2 个文件:
1:

asdfdata:tomatch1:asdffdataaa
asdfdata2:tomatch2:asdffdata33
asdf:tomatch3:asdfx

2:

bek:tomatch1:beke  
lek:tomatch3:lekee  
wen:tomatch2:wenne    

我想匹配两者中的第二个 clolumn,通过行上的任何数据,然后将其打印到像这样的行:

asdfdata:tomatch1:asdffdataaa:bek:beke
asdfdata2:tomatch2:asdffdata33:wen:wenne    

等等

我想 awk 最好,Match two files by column line by line - no key好像有点像这个!
感谢您的帮助!!

最佳答案

使用像这样的连接命令:

join -t":" -1 2 -2 2 <(sort -t":" -k 2 file1.txt) <(sort -t":" -k 2 file2.txt)

这是它的工作原理:

-t 用于分隔符
-1 - 来自第一个文件的第二个字段,以“:”分隔
-2 - 来自第二个文件的第二个字段,以“:”分隔
join 需要在我们想要加入的字段上对输入文件进行排序,因此您会看到带有 -k 选项和 t 选项指定的第二个字段的排序命令再次使用定界符作为冒号 (:) 并在按以下方式对输入进行排序后将输入传递给 join 命令第二场。

关于linux - 按列匹配并打印到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327738/

相关文章:

linux - 如何在 linux 中用逗号替换文本文件中的多余空格

java - VisualVM 启动后没有应用程序窗口

bash - awk:在第 n 次出现定界符时拆分文件,错误的第一个拆分文件

bash - 如何从命令行将每两行合并为一行?

unix - sed 丢失了该行的右侧部分

bash - 删除等号后的多行字符串

c - 如何解释此 PMAP 输出?

Linux非su脚本间接触发su脚本?

linux - 使用 awk 删除多次出现的子字符串

regex - 使用 sed 和 bash 注释掉一个文件中匹配行的文件路径