Quero adicionar hashes a todas as linhas em um arquivo de texto regular. Estou bem com o uso do terminal e da GUI - só preciso fazê-lo.
text-processing
Oxwivi
fonte
fonte
sed 's/^/##/' -i file
. Nesse caso, isso seria preferido, pois não pode dar errado. Em outros casos, esse comando pode ser combinado comdiff -u file.bak file
para ver as diferenças (se necessário, canalize-oless
). Se estiver confirmado para funcionar, o backup pode ser removido. Caso contrário, poderia ser restaurado com um simplesmv file.bak file
.sed 's/^\(.*\)$/##\1/'
, mas isso é muito melhor.Aqui está uma solução para esse problema usando perl
fonte
-p
switch também é útil:perl -pe 's/^/##/' infile > outfile
. (Também existe a-i[extension]
opção de substituir o arquivo de destino no local.) Perldoc.perl.org/perlrun.html#%2a-p%2aEnquanto estamos nisso:
Isso usa o (relativamente novo) plugin de edição local para o GNU awk 4.1.0+.
fonte
Aqui está uma
bash
maneira:( No
bash
shell , executarread -r
sem outros argumentos funciona comoIFS= read -r REPLY
.)Isso é estilisticamente inspirado na solução perl do beav_35 , que eu admito que provavelmente roda muito mais rápido em arquivos enormes, já
perl
que se espera que seja mais eficiente do que um shell quando se trata de processamento de texto.fonte
sed -i
não é padrão POSIX, portanto, se você é um purista, convém usared
:fonte
Aqui está uma
perl
maneira mais fácil do que a apresentada em outros lugares:Este (ab) usa o fato de que
perl -p
imprime a linha após executar o comando fornecido em-e
.fonte
Você pode usar o Vim no modo Ex:
%
selecione todas as linhass
substitutox
salvar e fecharfonte
Pode ser feito com a função de mapeamento do python e redirecionando stdin:
Salve a saída no novo arquivo e use-o em vez do original
fonte