Здесь может пригодиться
sdiff
(см. http://www.gnu.org/software/diffutils/manual/diffutils.html#Invoking-sdiff ). С его помощью вы можете делать интерактивные исправления. Таким образом, выполнение этого с временным файлом, созданным вами путем выполнения операций замены с использованием sed
, может быть возможным решением:
# use file descriptor 3 to still allow use of stdin
while IFS= read -r -d '' file <&3; do
# write the result of the replacement into a temporary file
sed -r 's/something/something_else/g' -- "$file" > replacer_tmp
if cmp -s -- "$file" replacer_tmp; then
continue; # nothing was replaced
fi
echo "There is something to replace in '$file'! Starting interactive diff."
echo
sdiff -o "$file" -s -d -- "$file" replacer_tmp
echo
done 3< <(find . -type f -print0)
(Файловый цикл с использованием замены процесса, отличного от POSIX, и read -d
как поддерживается, например, bash
.)
Я сам нашел решение. У меня такая проблема была с подлинностью пакетов. Я пытался добавить флаг принудительного соединения tcp(-rtsp _transport tcp ), и это работает. Больше нет проблем.