Como fazer este comando awk funcionar

0

Eu quero fazer o comando abaixo do trabalho, mas não posso. Por favor, verifique isso:

echo "random string random string mark: abcde random string random string" |
    awk '{gensub(/^.*mark: (.{5,5}).*$/,"\1","g"); print}'

Eu quero que este comando retorne apenas "abcde". Mas está sempre retornando a string de entrada inteira. Por quê?

    
por Samul 01.11.2015 / 15:09

2 respostas

1

O comando gensub não altera a string. O resultado é uma saída da função.

Por favor, tente:

echo "random string random string mark: abcde random string random string" |
awk '{print(gensub(/^.*mark: (.{5,5}).*$/,"\1","g"))}'

Editar:

Acontece que o usuário precisa analisar a saída superior, o que isso faz (como o usuário pergunta):

top -b -n 1 -d 1 |
awk 'NR==1{print(gensub(/.*load average: ([0-9\.\, ]+).*$/,"\1","gs"))}'

Observação: ele permite tanto o ponto quanto a vírgula para códigos de idioma que usam uma vírgula como separador decimal.

Por favor, dê uma olhada no mpstat como aqui apresentado , pode ser melhor para suas necessidades.

    
por 01.11.2015 / 15:27
1

Para reformular sua pergunta: você deseja imprimir a primeira palavra após a string "mark:".

A caminho, no awk:

echo "random string random string mark: abcde random string random string" | \
awk -v RS="mark: " 'NR==2{print $1}'

O acima divide a string em dois registros separados por "mark:" e depois imprime a primeira palavra do segundo registro (que é "abcde").

No sed:

echo "random string random string mark: abcde random string random string" | \
sed 's/.*mark: \([^ ]*\).*//'

O texto acima usa expressões regulares para encontrar a primeira palavra não espacial após a "marca:" e substitui toda a cadeia pela palavra.

    
por 01.11.2015 / 16:34
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '885351',
    'url' => 'how-to-make-this-awk-command-work',
];

$_COOKIE = [
    'advanced-frontend' => '7ef1e08dcjsc2irt37qvjntf13',
    '_csrf-frontend' => 'f872583dd81af5a0a890f161cf5dd79bca13c83e26054beb23af511081f0f535a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"KDyoJct4sLyrZjR8q26iZ1pWuxdFFMls";}',
];

$_SESSION = [
    '__flash' => [],
];