найти все совпадения между двумя файлами, затем добавить символ к началу всех совпадений во втором файле - PullRequest
0 голосов
/ 04 июня 2019

У меня есть два файла 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 Ответ

2 голосов
/ 04 июня 2019

awk на помощь!

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