Как я могу проверить, появляется ли один и тот же текст в двух разных файлах

У меня также были проблемы со сценарием. Мне не пришлось делать это дважды. Через минуту или около того все снова заработало. Но это все равно раздражало. Я решил, что это делает ненужные изменения маршрутизации. Нет никаких причин, по которым нормальный трафик от хоста не должен использовать физический интерфейс. Вам нужно использовать macvlan только для доступа к вашим виртуальным машинам. По этой причине единственные изменения маршрутизации, которые вам действительно нужны, это

ip route flush dev $MACVLN

ip route add $VMHOST dev $MACVLN metric 0

На тот момент у меня больше не было никаких проблем.

Также ничего не стоит, по крайней мере, на Centos 7, /sbin/ifup -local запускается systemctl перезапуском сети в конце запуска интерфейса. Таким образом, вы можете поместить сценарий туда, хотя он должен начинаться примерно так, поскольку вы не хотите запускать его при появлении других интерфейсов.

если ! тест "$1" = "em1"; тогда выход 0 фи

Вам, вероятно, также не нужен цикл проверки связи, когда он /sbin/ifup -локальный. На самом деле это опасно, поскольку это бесконечный цикл, поэтому, если есть какая-то проблема с сетью, система может не решить это как часть запуска.

-1
18.03.2020, 20:52
2 ответа

С join, sortиgrep

join <(sort /path/to/source) <(sort /path/to/destination) | grep '<string to check>

Тесты

cat source
a.txt
b.txt
c.txt
d.txt

cat destination
c.txt
a.txt
d.txt

join <(sort source) <(sort destination) | grep 'a.txt'
a.txt

join <(sort source) <(sort destination) | grep 'b.txt'

Если требуется проверить, не совпадает ли содержимое двух файлов -, можно ввести следующую команду

cmp --silent <(sort source) <(sort destination) || echo "files are different"

Тесты

cmp --silent <(sort source) <(sort destination) || echo "files are different"
files are different

Чтобы добавить все строки исходного файла, не содержащиеся в целевом файле, в файл /var/tmp/unmatched

comm -23 <(sort source) <(sort destination) > /var/tmp/unmatched

Чтобы удалить из исходного файла все строки, не содержащиеся в целевом файле

comm -1 <(sort source) <(sort destination) >| source

Поскольку мы находимся в bash и если вы установили noclobber как set -o noclobber, вам следует использовать синтаксис >|.

1
28.04.2021, 23:20

Выполнено с помощью приведенной ниже команды awk

f2count=`awk 'END{print NR}' p2`
f1count=`awk 'END{print NR}' p1 `
comm_p1_p2=`awk 'NR==FNR{a[$0];next}($0 in a){print $0}' p1 p2| awk 'END{print NR}'`

if [[ $f1count -eq $f2count ]] && [[ $f1count -eq $comm_p1_p2 ]]; then echo "both files p1  and p2 content are same"; else echo "different content found on file p1  and p2"; fi
0
28.04.2021, 23:20

Теги

Похожие вопросы