linux - 如何在 Linux 中从一个文件中搜索字符串并更新到另一个文件
问题描述
我有两个文件,我正在从一个文件中逐个搜索字符串并将记录更新到另一个文件中。假设我有文本文件 A.csv
TABLE1, ABC_STRING
TABLE2, ABC_STRING
TABLE3, ABC_STRING
B.csv
TABLEA,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLEB,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLE1,SOMEVALUE,ABC_INT,NULL,ABC_INT
TABLEC,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLE2,SOMEVALUE,ABC_INT,NULL,ABC_INT
TABLE3,SOMEVALUE,ABC_INT,NULL,ABC_INT
期待新文件中的输出,例如:
TABLEA,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLEB,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLE1,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLEC,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLE2,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
TABLE3,SOMEVALUE,ABC_STRING,NULL,ABC_STRING
我试过这样:
for i in $(grep -w "ABC_STRING" A.csv | awk -F ',' '{print $1}'); do
grep -w "$i" B.csv | sed 's/ABC_INT/ABC_STRING/g'
done | more
我不确定如何编写命令来复制每一行检查它是否包含字符串,如果它可用,则替换并将其写入 C.csv,如果不将其写入同一个 C.csv。谁能提供我的要求的代码片段。
解决方案
awk -F', *' -v OFS=',' 'NR==FNR{m[$1]=$2; next} $1 in m{$3=$5=m[$1]} 1' A.csv B.csv > C.csv
推荐阅读
- javascript - 如何在 JQuery Datepicker 中调整下一个和上一个按钮的大小?
- python-3.x - 强制客户端等待来自 azure 函数的响应
- python - 如何过滤数据框中的行以仅获取 3 个最受欢迎的数据并删除其他未使用的数据?
- r - 如何在 R 中将 MM/DD/YY 转换为 YYYY-MM-DD?
- javascript - onChange 事件影响字符串长度(消毒剂)
- oauth-2.0 - Google G Suite 用户的密码验证
- c# - 如何获得单选按钮的价值?
- android-layout - 当按钮内还有这么多空间时,为什么右边的文本被剪掉了?
- python - 获取字符串中的所有表情符号
- python - 将饼图更改为圆环图保持饼图