Substituindo barras invertidas por barras entre aspas duplas

2

Eu tenho um código-fonte C que foi originalmente desenvolvido no Windows. Agora eu quero trabalhar nisso no Linux. Existem várias diretivas de inclusão que devem ser alteradas para o formato Linux, por exemplo:

#include "..\includes\common.h"

Estou procurando uma linha de comando para percorrer todos os arquivos .h e .c , encontrar as diretivas include e substituir qualquer barra invertida por uma barra.

    
por Saeid Yazdani 26.01.2018 / 15:12

2 respostas

7
Solução

find + GNU sed :

find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\|/|g' {} +
  • "*.[ch]" - curinga para encontrar arquivos com extensão .c ou .h
  • -i : extensão GNU sed para editar os arquivos no local sem backup. FreeBSD / macOS sed tem uma extensão similar, onde a sintaxe é -i '' .
  • /^#include / - na linha de encontro / correspondência que começa com o padrão: #include
  • s|\|/|g - substitui todas as barras invertidas \ por barras normais / ( \ escape com barra invertida \ para representação literal).
por 26.01.2018 / 15:21
-2

Eu fiz abaixo do comando

input.txt

#include "..\includes\common.h"

comando:

 sed 's/\/\//g' input.txt

saída

#include "../includes/common.h"
    
por 27.01.2018 / 15:33