Substituir a string repetidamente

1

Quando executo o comando

sudo iwlist wlan0 scan  | grep ESSID

Eu obtenho o resultado:

ESSID:"DHS_3RD_FLOOR" ESSID:"MAXTA" ESSID:"MAXTA_5THWL" ESSID:"OPENSTACK" ESSID:"IOT" ESSID:"ved_opa" ESSID:"dlink" ESSID:"WifiFeazt"

Mas eu quero saída como: (sem ESSID: ")

DHS_3RD_FLOOR MAXTA MAXTA_5THWL OPENSTACK IOT ved_opa dlink WifiFeazt

Eu pesquisei no Google, mas não tenho ideia de como fazer isso.

Algum conselho?

    
por gangadhars 28.11.2014 / 08:04

4 respostas

7

Com o GNU sed :

sed -r 's/(ESSID:|")//g'

ou

sed 's/\(ESSID:\|"\)//g'

ou

perl -pe 's/(?:ESSID:|")//g'

ou em pura bash:

str=$(sudo iwlist wlan0 scan | grep ESSID)
str=${str//ESSID:/}
echo ${str//\"/}

Saída:

DHS_3RD_FLOOR MAXTA MAXTA_5THWL OPENSTACK IOT ved_opa dlink WifiFeazt
    
por 28.11.2014 / 08:12
2

No awk, eu faria como

$ .... | awk '{gsub(/ESSID:|"/,"")}1'
DHS_3RD_FLOOR MAXTA MAXTA_5THWL OPENSTACK IOT ved_opa dlink WifiFeazt
    
por 28.11.2014 / 08:25
1

POSIXly:

sed -e 's/[^"]*"\([^"]*\)"/ /g'
    
por 28.11.2014 / 08:32
0

Usando o GNU grep :

$ sudo iwlist wlan0 scan | grep -oP ':"\K[^"]+?(?=")'
DHS_3RD_FLOOR
MAXTA
MAXTA_5THWL
OPENSTACK
IOT
ved_opa
dlink
WifiFeazt

O sinalizador -o significa "imprimir apenas a parte correspondente da linha", quando mais de uma correspondência for encontrada, todas serão impressas. O -P habilita os PCREs que nos fornecem \K ("ignorar tudo correspondido até aqui") e lookaheads . Estes permitem corresponder dependendo dos seguintes caracteres, mas sem incluir os ditos personagens na própria partida. Portanto, a expressão regular significa "procure por :" e descarte-a, depois combine o máximo de " possível até o próximo " ".

Para obter tudo em uma linha, passe por tr :

$ sudo iwlist wlan0 scan | grep -oP ':"\K[^"]+?(?=")' | tr '\n' ' '
DHS_3RD_FLOOR MAXTA MAXTA_5THWL OPENSTACK IOT ved_opa dlink WifiFeazt $

Ou para obter uma nova linha:

$ echo $(sudo iwlist wlan0 scan | grep -oP ':"\K[^"]+?(?=")' | tr '\n' ' ')
DHS_3RD_FLOOR MAXTA MAXTA_5THWL OPENSTACK IOT ved_opa dlink WifiFeazt
    
por 28.11.2014 / 09:49

Tags