2013-03-15 14 views

Odpowiedz

9

Spróbuj zrobić tak:

$ cat aaaa 
foo"bar"base 
$ grep -oP '"\K[^"\047]+(?=["\047])' aaaa 
bar 

używam rozejrzeć wyprzedza re Techniki gex.

Jeśli chcesz cytaty TOO:

$ grep -Eo '["\047].*["\047]' 
"bar" 

Uwaga:

\047 

jest ósemkowa reprezentacja ASCII jednolitego cytatem

+0

Dzięki temu prawie działa - wyjście dostaje ciąg, jak również; poza podwójną kwotą – Grimlockz

+0

Chcesz również cytatów? –

+0

Nie tylko żądło, ale za pomocą powyższego grep daje mi; również ... spróbuj tego na przykład user = "bobhope"; – Grimlockz

1

Spróbuj:

grep "Test" /tmp/junk | tr '"' ' ' 

ten będzie rem Ove cytuje z wyjścia grep

Albo można spróbować wykonać następujące czynności:

grep "Test" /tmp/junk | cut -d '"' -f 2 

To będzie używać cudzysłowu jako ogranicznik. Po prostu określ pole, które chcesz wybrać. Dzięki temu możesz wybrać żądane informacje.

+1

Jak na ironię, oba te elementy dają pustą linię, gdy są podłączone do 'grep -o '" [^ "] \ +"' ', ale' grep -Eo '". *"' | | tr -d '"'' działało. – LoungeKatt

+0

'cut' nie jest dobrym wyborem, ponieważ informacje nie są podzielone na pola. Liczba cytowań w wierszu może wynosić 1, może być 5, może być brakująca. – SaltyNuts

6
$ cat aaaa 
foo"bar"base 

$ grep -o '"[^"]\+"' 
"bar" 
Powiązane problemy