linux - 比较两个文件中相同字符串的 grep 输出

标签 linux bash

我有3个文件: 1 包含要检查的字符串列表 2 包含新价格 3 包含如果文件 #2 中的价格发生变化则需要替换的价格

示例:

文件 #1 项目1 项目2

文件#2

item1cost100
item2cost200

文件# #3

item1cost101
item2cost199

运行脚本后,文件 #3 应该被更新

文件# #3

item1cost100
item2cost200

文件 #2 和 #3 包含很多条目,但只需要检查文件 #1 中的条目,如果不同则写入文件 #3

我只比较了两个文件的 1 个字符串,我不确定如何循环文件 #1 的内容以及如何将更改写入文件 #3 我开始使用 sed 命令并陷入困境,不知道如何解开变量

这是我得到的

item="item1"
itemold=$(cat file2 | grep item1)
echo $itemold
itemnew=$(cat file3 | grep item1)
echo $itemnew
echo $item
if [ $itemold = $itemnew ]; then
echo "MATCH!"
else
echo "NO MATCH!"
fi

最佳答案

#!/bin/bash
cut -d' ' -f1 file1 > a
grep `cat a` file2 > b
grep `cat a` file3 > c
sed s/`cat c`/`cat b`/g file3 > d
cut -d' ' -f2 file1 > a
grep `cat a` file2 > b
grep `cat a` file3 > c
sed s/`cat c`/`cat b`/g d > file3

这会处理您提供的案例。这是可以概括的。

关于linux - 比较两个文件中相同字符串的 grep 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26770972/

相关文章:

c++ - 静态大小数组的堆栈保护的预期行为是什么?

linux - 如何仅使用命令行在 X session 之间切换?

arrays - echo 数组的元素不输出任何内容

linux - 使用 Sed 从文本文件中删除一行

xml - 如何编写可以解析 XML 文件作为输入并从文件中删除某些元素的 bash 脚本

java - 如何从 bash 脚本指定工作目录

linux - 通过脚本分配键盘按键以启动特定程序

linux - 在部署脚本中查找已安装的包时,是否应该检查所有可能的路径?

Bash 脚本 : save stream from Serial Port (/dev/ttyUSB0) to file until a specific input (e. g。 eof)出现

linux - While 遍历文件名并删除空格