Кажется, я понял, что произошло. Я сделал первый rsync, когда службы были активны, поэтому результирующие файлы были повреждены (это нормально).
Затем я остановил службы и сделал второй rsync, чтобы скопировать только различия более быстрым способом.
Это не сработало. Может быть, виноват флаг -t? Может быть, mtime файлов обновляется не каждый раз, когда вы записываете байт, а только когда вы открываете файл для записи?
Предполагая, что file1
содержит заменяемый текст, file2
содержит замещающий текст, и вы можете полагаться на ID=
для выполнения поиска между обоими, вы можете использовать этот (более популярный, я думаю )awk-скрипт:
awk -F'\t' '
NR==FNR{
a[$1]=$2 # fills the array a with the replacement text
next
}
$3=="gene"{ # check only lines with 'gene'
id=gensub("ID=([^;]*);.*","\\1",1,$9); # extract the id string
if(id in a) # if the id is part of the array a
gsub(id,a[id]) # replace it
}
1 # print the line
' file2 file1