Eu tenho um arquivo com o seguinte conteúdo:
[root@server list]# cat filenames.txt
[AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB]
[root@qa4app01 list]#
Eu quero isso como uma lista para usar no meu script python, então estou tentando alterar AAA'
para 'AAA'
e 'BBB
para 'BBB'
e pensei em usar sed
e substituir [
com ['
e ]
com ']
.
Para confirmar, tentei isso:
[root@server list]# cat filenames.txt | sed "s/]/']/g"
[AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','MENSCOGH','TESTENT','DORASINE','LOKAWINK','BBB']
[root@server list]#
Funcionou e consegui substituir o ]
por ']
. Então, para AAA
eu só preciso trocar substituir os colchetes direitos e a aspa simples no sed com um colchete esquerdo e tentei fazer isso:
[root@server list]# cat filenames.txt | sed -e "s/]/']/g" -e "s/[/['/g"
sed: -e expression #2, char 8: unterminated 's' command
[root@server list]#
Ok. Eu pensei por algum motivo acrescentando sed
comandos não estão funcionando corretamente e para verificar isso eu tentei o sed
no colchete esquerdo separadamente:
[root@server list]# cat filenames.txt | sed "s/[/['/g"
sed: -e expression #1, char 8: unterminated 's' command
[root@server list]#
Estranho. Parece que sed
está tratando a esquerda e os colchetes de maneira diferente. Consegui escapar sem escapar do [
, enquanto sed
se recusa a trabalhar com ]
sem o caractere de escape. Eu finalmente consegui o que eu quero com a adição de caracteres de escape para o colchete esquerdo como abaixo:
[root@server list]# cat filenames.txt | sed -e "s/]/']/g" -e "s/\[/\['/g"
['AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','MENSCOGH','TESTENT','DORASINE','LOKAWINK','BBB']
[root@server list]#
Eu estou no processo de escrever um script python + shell que manipulará arquivos com numerosas instâncias de ambos os colchetes. Minha pergunta é se os colchetes direito e esquerdo são tratados de maneira diferente por sed
ou bash
.
a versão sed é a versão 4.2.1 do GNU sed.
PS: Eu decidi usar caracteres de escape com os dois colchetes para jogar em segurança, mas quero ter certeza absoluta de que ele não quebrará o script se eu não usar o caractere de escape (por razões de legibilidade) em lugares onde Eu estarei trabalhando apenas com colchete direito ]