【问题标题】:compare two files in bash with substring将bash中的两个文件与子字符串进行比较
【发布时间】:2014-11-12 00:04:24
【问题描述】:

我有两个文件

tmp1.txt

aaa.bbbbb.txt
bbb.aaaaa.txt
ddd.bbbbbb.txt
mmm.cccccc.txt

tmp2.txt

aaa first
bbb second
ccc third
ddd fourth
eee fifth
fff sixth

我想比较这两个文件 tmp1.txt 和 tmp2.txt 以便首先它使用第一个“之前的任何内容。”即 aaa,bbb,ccc,ddd 并在 tmp2.txt 中搜索,如果找到匹配项显示为

aaa.bbbbb.txt first
bbb.aaaaa.txt second
ddd.bbbbbb.txt fourth

谢谢

【问题讨论】:

  • 您已经尝试过什么?
  • 尤其是在您posted this 之后,您可以展示您自己的尝试脚本。

标签: bash awk grep find substring


【解决方案1】:

使用awk

awk 'NR==FNR{a[$1]=$2; next}$1 in a{print $0,a[$1]}' tmp2.txt FS=\. tmp1.txt
aaa.bbbbb.txt first
bbb.aaaaa.txt second
ddd.bbbbbb.txt fourth

在末尾使用字段分隔符FS 以对其后面的文件产生影响。

【讨论】:

  • +1 我正要发布一些非常相似的内容,但在文件之间设置FS 是新事物
  • @TomFenech 感谢您的编辑。这是reference,但老实说,直到我看到Ed Morton 在他的一个答案中使用它时,我才知道它。
  • 为什么我对 Ed 与它有关系并不感到惊讶 :)
猜你喜欢
  • 1970-01-01
  • 2018-03-17
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多