Estou tentando corrigir um arquivo como este no bash:
cat << ''EOF | patch --dry-run
> --- urancid 2017-12-06 09:56:33.000000000 -0600 patch --dry-run
> +++ /tmp/urancid 2017-12-06 15:06:57.000000000 -0600
> @@ -393,7 +393,7 @@
> last if (/^$prompt/);
> next if (/-ac\.\s*/);
> next if (/-fs\.\s*/);
> - next if (/set date\s*/)
> + next if (/set date\s*/);
> next if (/^(\s*|\s*$cmd\s*)$/);
> if ( ! /^$prompt/) {
> if ( ! $skipprocess ) {
> EOF
mas tudo que eu recebo é
patching file urancid
Hunk #1 FAILED at 393.
1 out of 1 hunk FAILED -- saving rejects to file urancid.rej
Parece que deveria ser possível, se eu pegar o arquivo de patch que estou colando, ele funciona.
Quero fazer isso para criar um script de patch sem incluir vários arquivos.
Não estou muito familiarizado com o que o "patch" se preocupa, acho que há alguns problemas de espaço em branco?
Corrigir o espaço em branco em seu exemplo para que o patch possa ser aplicado demonstra que o conceito é aceitável (embora eu não veja por que
cat
é necessário).Por outro lado, se você tiver um patch com espaços em branco mal alinhados, sugiro que use o
--ignore-whitespace
parâmetro. (Você pode encontrar isso na página de manual do patch,man patch
.)