使用正则表达式查找和替换文件

抢夺者

好,让我们假设我有包含以下内容的FileA.txt

string1, 3269
asdf, 8635
ghjk, 8534
foo, 4179
bar, 23490

我想使用一个或两个文本文件(以哪种情况为准),可以在其中存储以下内容:

FileB.txt

string1 | 1string
bar | foo

|”将是一个分隔符,它是否必须是另一个文件也没关系(如果是这种情况,则1string和foo将位于FileC.txt上)。

我想使用要在FileB.txt(甚至可能是FileC.txt)中进行搜索和替换的字符串运行搜索和替换操作,因此结果如下:

1string, 3269
asdf, 8635
ghjk, 8534
foo, 4179
foo, 23490

我可以使用任何工具来做到这一点吗?谢谢!

罗曼·佩列赫雷斯特(RomanPerekhrest)

Awk 解决方案:

awk 'NR==FNR{ a[$1]=$3; next }$1 in a{ $1=a[$1] }1' FileB.txt FS=',' OFS=',' FileA.txt
  • NR==FNR{ ... }-处理第一个输入文件,即FileB.txt
    • a[$1]=$3-使用第一个字段作为数组索引/键,每个第三个字段值捕获$3到数组中a$1
    • next -跳转到下一条记录
  • $1 in a-在处理第二个输入文件(即FileA.txt)时,检查第一个字段值是否$1出现在数组a键中:
    • $1=a[$1] -用重置价值替换

输出:

1string,  3269
asdf, 8635
ghjk, 8534
foo, 4179
foo,  23490

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章