Sed não funciona como pretendido

5

Eu gostaria de usar este script com a intenção de substituir todas as instâncias da letra Q dentro de um arquivo com o conteúdo do arquivo "question.txt". Em vez disso, o que acontece é que todas as instâncias de Q no arquivo desaparecem e o conteúdo de "question.txt" é impresso na parte inferior do novo arquivo.

Alguma idéia?

sed -i.bkp '/Q/{
s/Q//g
r /Users/ericbrotto/Desktop/question.txt
}' Commision.txt 

EDIT 1

Estou tentando descobrir qual versão eu tenho, mas continue recebendo isso:

    
por Eric Brotto 25.07.2011 / 13:50

1 resposta

1

Acho que encontrei o motivo.

Se eu colocar um espaço em branco após o nome do arquivo, um nome de arquivo com espaços em branco à direita será pesquisado. Eu posso reproduzir o problema desta maneira:

Fontes:

cat q.dat
Q
Not q
And Q again
And again not


cat kuh.dat 
Die dumme
Kuh

Exemplo de trabalho com o nome de arquivo 'kuh.dat':

sed '/Q/{
s/Q//g
r kuh.dat
}' q.dat

Die dumme
Kuh
Not q
And  again
Die dumme
Kuh
And again not

Agora, o exemplo com falha, com 'kuh.dat'.

sed '/Q/{
s/Q//g
r kuh.dat 
}' q.dat

Not q
And  again
And again not

Como o nome do arquivo não é citado, é uma grande surpresa para mim que o espaço em branco no final do nome do arquivo seja reconhecido. E não é visível no shell, então eu procurei por um longo tempo sem sucesso, onde a diferença entre os dois exemplos é.

    
por 28.07.2011 / 14:45

Tags