Substitui um caminho em muitos arquivos de texto no linux

0

Por favor, ajude-me a substituir o caminho em vários arquivos de texto em uma linha.

Suponha que eu tenha /home/shyam/Raghav/2014/12_dec/31122014/ em meus arquivos de texto e eu quero que ele seja substituído por /home/shyam/Raghav/12_dec/31122014 , como posso fazer isso?

    
por Rag 31.12.2014 / 05:50

4 respostas

1

Em um shell

cat original_file_prefix.* | sed 's/[" ]//g' > new_file_name

Ou abra seus arquivos no vim e digite o seguinte (você terá que executá-lo)

:%s/[" ]//g

Isso deve se livrar das citações e espaços.

    
por 31.12.2014 / 07:06
1

Tente com este comando:

sed -i 's/\/home\/shyam\/Raghav\/2014\/12_dec\/31122014\//\/home\/shyam\/Raghav\/12_dec\/31122014/g' files*

-i opção edita os arquivos no lugar.

Substitua files* pelo seu padrão de pesquisa desejado.

Observe que isso substitui /home/shyam/Raghav/2014/12_dec/31122014/ por /home/shyam/Raghav/12_dec/31122014 conforme sugerido. Sem% final / no resultado. Se você quiser, substitua /g por \//g no final do comando.

    
por 31.12.2014 / 09:12
1
sed -i 's:/home/shyam/Raghav/2014/12_dec/31122014/:/home/shyam/Raghav/12_dec/31122014:g' files*.txt
    
por 31.12.2014 / 09:25
-1

Para alterar todos os caminhos em vários arquivos de texto, recomendo abrir todos esses arquivos em uma janela dividida. ou seja, 'vim -o [arquivo1] [arquivo2] [arquivo3] ...'
Agora você verá todos os arquivos abertos em buffers ViM separados. Agora, para substituir o texto necessário em TODOS os buffers, você pode emitir:
': windo% s / [SEARCH_PATTERN] / [REPLACE_PATTERN] / g'
E isso deve emitir o comando de substituição de texto em TODOS os buffers.

Seu comando deve ser então:
: windo% s / \ / home \ / shyam \ / Raghav \ / 2014 \ / 12_dec \ / 31122014 \ // \ / home \ / shyam \ / Raghav \ / 12_dec \ / 31122014 '

Espero que ajude.

    
por 31.12.2014 / 09:56

Tags