好,让我们假设我有包含以下内容的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
我可以使用任何工具来做到这一点吗?谢谢!
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] 删除。
我来说两句