Shell脚本匹配另一个文本文件中的数据

时间:2018-08-14 16:06:47

标签: linux bash shell scripting

我有一个shell脚本

#/bin/bash
var1=`cat log.json | grep "accountnumber" | awk -F ' ' '{print $1}'`
echo $var

shell脚本的输出是:-

23466
283483
324932
87374

我要匹配已经存储在另一个文件中的上述数字(以下是文件格式)并打印其值。

23466=account-1
283483=account-2
324932=account-3
87374=account-4
127632=account-5
1324237=account-6
73642=account-7
324993284=account-8
.
.
4543454=account-200

预期输出

account-1
account-2
account-3
account-4

2 个答案:

答案 0 :(得分:1)

紧凑的单行解决方案可以是:

join -t "="  <(sort bf) <(sort fa) | cut -d '=' -f 2

此处 fa 是包含bash脚本输出的文件,而 bf 是具有 23466 = account-1 格式的文件

输出为:

account-1
account-2
account-3
account-4

答案 1 :(得分:0)

#!/bin/bash

for var1 in $(awk -F ' ' '/accountnumber/{print $1}' log.json)
do
  awk -F= '$1=="'"$var1"'"{print $2}' anotherfile
done

有一会儿,还有一个答案,几乎是奏效的,我认为这比我写的要好得多。大型文件也可能更快/更高效。在这里是固定的。

awk -F ' ' '/accountnumber/{print $1}' log.json \
| sort -n \
| join -t= - accountfile \
| cut -d= -f2