29 de janeiro de 2013

Linux - Expressões regulares no shell

Como tranformar isso:
<option value="AC">Acre</option>
<option value="AL">Alagoas</option>
<option value="AP">Amapá</option>
<option value="AM">Amazonas</option>
<option value="BA">Bahia</option>
<option value="CE">Ceará</option>
<option value="DF">Distrito Federal</option>
<option value="ES">Espirito Santo</option>
<option value="GO">Goiás</option>
<option value="MA">Maranhão</option>
<option value="MS">Mato Grosso do Sul</option>
<option value="MT">Mato Grosso</option>
<option value="MG">Minas Gerais</option>
<option value="PA">Pará</option>
<option value="PB">Paraíba</option>
<option value="PR">Paraná</option>
<option value="PE">Pernambuco</option>
<option value="PI">Piauí</option>
<option value="RJ">Rio de Janeiro</option>
<option value="RN">Rio Grande do Norte</option>
<option value="RS">Rio Grande do Sul</option>
<option value="RO">Rondônia</option>
<option value="RR">Roraima</option>
<option value="SC">Santa Catarina</option>
<option value="SP">São Paulo</option>
<option value="SE">Sergipe</option>
<option value="TO">Tocantins</option>

Nisso? :
<option value="AC">AC</option>
<option value="AL">AL</option>
<option value="AP">AP</option>
<option value="AM">AM</option>
<option value="BA">BA</option>
<option value="CE">CE</option>
<option value="DF">DF</option>
<option value="ES">ES</option>
<option value="GO">GO</option>
<option value="MA">MA</option>
<option value="MS">MS</option>
<option value="MT">MT</option>
<option value="MG">MG</option>
<option value="PA">PA</option>
<option value="PB">PB</option>
<option value="PR">PR</option>
<option value="PE">PE</option>
<option value="PI">PI</option>
<option value="RJ">RJ</option>
<option value="RN">RN</option>
<option value="RS">RS</option>
<option value="RO">RO</option>
<option value="RR">RR</option>
<option value="SC">SC</option>
<option value="SP">SP</option>
<option value="SE">SE</option>
<option value="TO">TO</option>

Você pode editar linha por linha e pronto. Ooooouuuu.... usar o poderoso Shell, assim:
for i in $(cat estados.txt | sed 's/<option value=\"//' | sed 's/\".*//')
do echo "<option value=\"$i\">$i</option>"
done > estados2.txt

Explicando:
cat estados
Mostra o conteúdo do arquivo.

sed 's/<option value=\"//'
Substitui o <option value=" por vazio.

sed 's/\".*//'
Substitui todos os caracteres depois do " por vazio.

echo "<option value=\"$i\">$i</option>"
Imprime na tela com os dados recuperados.

done > estados2.txt
Salva no arquivo estados2.txt

Nenhum comentário:

Postar um comentário