Como usar o sed para substituir as chaves em um arquivo usando um regex?

1

Eu gostaria de modificar um arquivo para substituir chaves, supondo que essas chaves estejam no arquivo como:

42NM
52NM
23NO
XNNM

Eu gostaria de substituir qualquer coisa por NM, com a palavra "Ok".

 1 #!bin/bash/
 2 
 3 if [ -f KeyFile]
 4 then
 5         sed 's/[0-9][0-9]NM/Okay/g' KeyFile
 6 else
 7         echo "File does not exist or cannot be found."
 8 fi
 9 
10 exit 0

eu corri o comando:

chmod a+x FindKeys

e, quando tento executar o script, obtenho:

-bash-3.00$ ./FindKeys
-bash: ./FindKeys: bin/bash/: bad interpreter: No such file or directory

Parece que tenho dois problemas, um em que o arquivo de script não está sendo executado corretamente e dois em que o comando sed não está funcionando.

    
por Juan Davila 18.08.2015 / 21:23

1 resposta

4

Linha 1 : sua linha de hashbang não está correta, use:

#!/bin/bash

Linha 3 : Tome cuidado com o utilitário test (ele precisa de um espaço antes do fechamento ] ):

if [ -f KeyFile ]

Linha 5 : no comando sed , use -i para ativar a edição no local de sed , caso contrário, as edições só serão impressas no stdout:

sed -i 's/[0-9][0-9]NM/Okay/g' KeyFile
    
por 18.08.2015 / 21:30