Greping texto após correspondência com barras

0

Então, eu preciso grep o texto depois de uma string como

Motherboard P/N           :   XXXXXXXXXX

Onde XXXXXXXXX é o texto que eu quero. Eu não quero o Motherboard P/N :

Eu não consigo fazer awk, cut, sed ou qualquer coisa funcionar bem com o P / N

Alguma idéia?

    
por Preston Cole 19.02.2018 / 23:25

2 respostas

1

grep -oP 'Motherboard P/N           :   \K.*'

Explicação:

  • -o Imprimir apenas parte correspondente da linha
  • -P Use regex compatível com Perl (PCRE) - isso permite recursos de regex mais avançados
  • \K Não considere o anterior como parte da correspondência.
  • .* Corresponde zero ou mais de qualquer caractere (exceto uma nova linha)
por wjandrea 20.02.2018 / 00:45
0

Por que não usar o mecanismo de pipeline com grep e sed da seguinte maneira:

grep "Motherboard P/N" souceFile | sed 's/^.*Motherboard\ P\/N\ \:\ //1'

onde sourceFile é um arquivo que contém seu texto. Sed tem a seguinte expressão regular:

  • ^.* significa: desde o início da linha, qualquer número de caracteres até

  • Motherboard string com mais alguns caracteres, que precisam de um comentário (abaixo)

  • O caracter \ na frente dos caracteres especiais "escapa" deles, então eles não são interpretados pelo shell ou pelo comando, mas são usados como caracteres simples: um espaço, barra e dois-pontos.

Ou você pode canalizar a saída de um comando (como o útil sudo lshw )

sudo lshw | grep "Motherboard P/N" | sed 's/^.*Motherboard\ P\/N\ \:\ //1'

No entanto, é mais provável que você não encontre o texto "Motherboard P / N:" na saída de lshw, e a saída deste exemplo pode estar vazia ...

EDITAR:

Ou, como vejo o que você precisa dos seus comentários, você pode modificar o regex um pouco, para acomodar "S / N" e "P / N" ao mesmo tempo. Use um ponto . no lugar de um caractere que varia entre as linhas do texto de origem. Por exemplo:

sed 's/^.*Motherboard\ P\/N\ \:\ //1'  # the initial version
sed 's/^.*Motherboard\ .\/N\ \:\ //1'  # dot instead of "P"

... o mesmo para grep

    
por Patryk Mazurkiewicz 20.02.2018 / 00:24