t sed ou awk ou grep para obter a primeira ocorrência dinâmica de uma string

0

desta string

Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)

Eu quero obter (e imprimir no shell) a primeira correspondência após "... apache2.service;" Esta palavra pode ser "ativada" ou "desativada"

Como posso usar o grep ou o sed ou o awk para obtê-lo?

    
por Lilia 01.10.2018 / 20:00

2 respostas

0

Usando SED :

echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | sed -n 's/.*service; \([^;]*\).*//p'

Usando o Grep :

echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | grep -o -P '(?<=service; ).*(?=;)'

Usando o AWK :

echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | awk -F 'service; |;' '{print $2}'
  • imprime a string entre service; e ;
por 01.10.2018 / 20:40
0

você pode usar awk

 echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | awk '{print $4}'

ou awk

echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | awk -v RS=" " '/service/{getline;print "",$0}' | tr -d ";"

ou cut

echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | cut -d';' -f 2

ou sed para extrair disable entre dois ponto-e-vírgula

 echo "Loaded: loaded (/lib/systemd/system/<name>.service; disabled; vendor preset: enabled)" | sed 's/^[^;]*;//; s/;.*//'
    
por 01.10.2018 / 20:08

Tags