首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >shell脚本与另一个文本文件中的数据匹配

shell脚本与另一个文本文件中的数据匹配
EN

Stack Overflow用户
提问于 2018-08-15 00:06:47
回答 2查看 119关注 0票数 1

我有一个shell脚本

代码语言:javascript
复制
#/bin/bash
var1=`cat log.json | grep "accountnumber" | awk -F ' ' '{print $1}'`
echo $var

shell脚本的输出是:-

代码语言:javascript
复制
23466
283483
324932
87374

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

代码语言:javascript
复制
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

exapected输出

代码语言:javascript
复制
account-1
account-2
account-3
account-4
EN

回答 2

Stack Overflow用户

发布于 2018-08-15 00:40:38

紧凑型单线解决方案可以是:

代码语言:javascript
复制
join -t "="  <(sort bf) <(sort fa) | cut -d '=' -f 2

其中fa是包含bash脚本输出的文件,bf是bash格式的文件。

输出为:

代码语言:javascript
复制
account-1
account-2
account-3
account-4
票数 1
EN

Stack Overflow用户

发布于 2018-08-15 00:15:23

代码语言:javascript
复制
#!/bin/bash

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

有一段时间,有另一个几乎有效的答案,我认为它比我写的要圆滑得多。在大文件上可能也会更快/更高效。在这里它是固定的。

代码语言:javascript
复制
awk -F ' ' '/accountnumber/{print $1}' log.json \
| sort -n \
| join -t= - accountfile \
| cut -d= -f2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51845603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档