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 ]