shell - awk:如何从查找文件中获取整个字符串

标签 shell awk

这个问题与this question密切相关:

有许多 tsv 文件包含这样的分类元素:

doc1.tsv

<http://uri.gbv.de/terminology/bk/86.56> 
<http://uri.gbv.de/terminology/bk/58.28>

还有一个查找表,其中还包含类名:

查找.tsv

<http://uri.gbv.de/terminology/bk/44.38>        Pharmakologie
<http://uri.gbv.de/terminology/bk/44.43>        Medizinische Mikrobiologie
<http://uri.gbv.de/terminology/bk/58.28>        Pharmazeutische Technologie
<http://uri.gbv.de/terminology/bk/86.56>        Gesundheitsrecht. Lebensmittelrecht

Raman Sailopal已经给出了很好的解决方案提示,如下:

awk 'FNR==NR{ urls[$1]=$2 } FNR!=NR { print $1"\t"urls[$1] }' lookup.tsv doc1.tsv >> result.tsv

不幸的是,该命令只是将第一个字符串变为空白,但如“Gesundheitsrecht. Lebensmittelrecht”中所示,整个文本都是必需的。需要添加什么?

最佳答案

您可以在循环表中保存 $0 而不是 $2,因为您似乎想打印整行

$ awk 'FNR==NR { urls[$1]=$0 } FNR!=NR { print urls[$1] }' lookup.tsv doc1.tsv
<http://uri.gbv.de/terminology/bk/86.56>        Gesundheitsrecht. Lebensmittelrecht
<http://uri.gbv.de/terminology/bk/58.28>        Pharmazeutische Technologie

关于shell - awk:如何从查找文件中获取整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64900957/

相关文章:

java - 来自 AWT JFrame 的真正应用程序模态 SWT shell

c - 在 C 程序和 shell 脚本之间共享头文件

bash - awk 变量不适用于日期 grep

Linux shell 重命名文件(如果存在)

linux - 无法将带有大括号扩展操作的字符串解析为命令

linux - Unix 命令通过根据条件组合 2 个文件来创建新的输出文件

shell - awk 是一种编程语言还是只是一种工具?

awk 如何打印计数器的最后一个值?

Linux - 在特定时间启动 recordmydestop

bash - Unix:根据匹配的字符串将文件分成两个