В зависимости от временных рамок, необходимых для синхронизации, вы можете обойтись без использования двух процессов rsync. Настройте задание cron для запуска rsync -au
на каждом хосте. Это должно поддерживать "синхронизацию" обоих хостов в течение определенного периода времени. Вы также можете использовать inotify для запуска rsync при каждом изменении файла.
Вы можете использовать регулярное выражение, привязанное к концу поля, вместо строкового соответствия:
awk -F: '$3 ~ /+ ID$/' < file.txt
Column1:Column2:Column3 + ID
или прикрепить к концу линии с помощьюgrep
:
grep '+ ID$' < file.txt
Column1:Column2:Column3 + ID
Вы можете использовать substr следующим образом:
awk '{ if (substr($0,position,length)=="+ ID" { print $0 } }' myfile.txt
Это можно сделать через
find dir -type f -exec grep -H '+ ID$' {} +
Это найдет все обычные файлы в каталоге dir
или ниже, а затем запустит grep -H '+ ID$'
пакетами из максимально возможного количества файлов. Результат будет содержать как имя файла, совпадающего с регулярным выражением, так и строки из совпавшего файла.
Чтобы получить только имена файлов, используйте -l
вместо -H
с grep
, а чтобы получить только совпадающие строки, используйте вместо этого -L
.
Регулярное выражение + ID$
будет соответствовать любой строке файла, содержащей точно такую же строку + ID
в самом конце строки.
Или без find
, но с grep
, который может выполнять рекурсию в подкаталоги:
grep -R '+ ID$' dir
В системах с grep
, не выполняющим-H
(это не -стандартная опция ), вместо этого вы можете использовать
find dir -type f -exec grep '+ ID$' /dev/null {} +
Если вам нужны только совпадающие строки (и отсутствие имен файлов )в такой системе, cat
файлы вместе и grep,:
find dir -type f -exec cat {} + | grep '+ ID$'
grep -Pie '(Column\d:?){3} + ID$' file.txt > out.txt
если, например, Колонка 1 :повторение шаблона более 3, измените {3,}
выше