查找两个文件之间的所有匹配项,然后将字符追加到第二个文件中所有匹配项的开头

时间:2019-06-04 16:07:28

标签: bash sed grep

我有两个文件Listed.csv和Config.txt,我想做的是找到两个文件之间所有完全匹配的字符串,然后在Config.txt文件中的匹配行的开头添加#。

我应该注意文件中有一些句点,因为它们主要由IP地址(IPv4)组成

我要做什么的例子

Listed.csv

smtp-listener 10.0.0.1
smtp-listener 10.0.0.2

Config.txt

smtp-listener 10.0.0.1
smtp-listener 10.0.0.2

所需的输出

Config.txt

#smtp-listener 10.0.0.1
#smtp-listener 10.0.0.2

我已经尝试过的代码

#!/bin/bash
echo "Replace Periods with {}"
sed -i 's/\./{}/g' config.txt
sed -i 's/\./{}/g' Listed.csv

CONFIG="$(cat Listed.csv)"
sed -i "s/$CONFIG/#$CONFIG/g" config.txt

echo "Replace {} with Periods"
sed -i 's/{}/\./g' config.txt
sed -i 's/{}/\./g' Listed.csv

echo "Done"

1 个答案:

答案 0 :(得分:2)

awk来营救!

$ awk 'NR==FNR{a[$0]; next} $0 in a{$0="#" $0}1' listed config > config.updated