O comando grep para obter um arquivo específico, mas não funciona

0

Eu quero exibir todas as linhas no arquivo inventory que contêm a palavra Straw logo antes de um espaço.

O arquivo de dados inventory contém:

Strawberry Jam,300,4
Raspberry Jam,1216,7
Blueberry Jam,96,195
Strawberry Compote,49,621
Raspberry Compote,1937,624
Blueberry compote,200,625
Frozen Strawberries,130,1941
Straw Hats,16,2047

Eu tentei grep ".Straw" inventory .

    
por Lovya Bird Hasse801 19.11.2016 / 20:52

5 respostas

2

Talvez com algo assim:

grep -iE '(^|[^a-z])straw ' inventory

Linhas começando com "palha" e linha correspondendo a um caractere não-alfabético seguido por "palha" (pode ser necessário combinar números também, ... depende do seu arquivo de inventário).

Atualização: se você precisar que seu espaço seja antes da palheta, então:

grep -i ' straw' inventory
grep -iE ' straw( |$)' inventory
    
por 19.11.2016 / 21:00
1

Sua linha de comando parece estar ok para mim, talvez não haja espaço depois de "Straw".

Exemplo: criei um arquivo com uma linha com espaço e outro com a aba logo após "Straw".

$ cat inventory
00 Strawberry
12Straw space
21Straw tab
cba Straw

Vamos executar seu comando:

$ grep -i 'straw ' inventory
12Straw space

Agora vamos executar o mesmo, mas com as classes de caracteres:

$ grep -i 'straw[[:space:]]' inventory
12Straw space
21Straw tab
    
por 19.11.2016 / 21:26
0

Pipe cat para grep? cat inventory | grep "^straw\ "

Também pode ser alcançado com sed e printf

    
por 19.11.2016 / 21:18
0

basicamente eu iria com os outros e diria

cat inventory | grep straw

quanto a mim, esta deve ser a solução. Mesmo que seja um "abuso de gatos".

    
por 20.11.2016 / 13:49
0

Eu tive o mesmo problema, então decidi compartilhar com os outros. Todos eles estão corretos.

  1. egrep "Straw[[:space:]]" inventory
  2. grep "Straw[ ]" inventory
  3. grep "Straw " inventory

Mas apenas o último funciona para essa tarefa no Linux.

    
por 22.07.2017 / 05:43

Tags