2016-06-29 14 views
1

Hallo Ich möchte Zeilen aus einem CSV entfernen, die die Zeichenfolge vol gefolgt von 2 oder mehr Nummer enthalten.Zeilen entfernen, die Zeichenfolge gefolgt von x Anzahl der Zahlen enthalten

Beispiele Daten:

2454564, Stage Mechanics vol 4 8 9, 121545, 454545454 
24545454, Dancing on ice vol 5, 454554, 45454545 
5454545, Who is the man, 545456454, 4545454 
8785648654, year of the Panda vol 89 12, 545454, 545454 

gewünschte Ausgabe:

24545454, Dancing on ice vol 5, 454554, 45454545 
5454545, Who is the man, 545456454, 4545454 

Ich weiß, dass ich verwenden kann:

cat $csv1 | grep -vi "vol" > $newcsv 

aber natürlich würde dies nur Linien entfernen mit "vol" in- Wie integriere ich die Regel "gefolgt von 2 oder mehr Zahlen" in diesen Code?

Dank

+1

'grep -vi 'vol [[: digit:]] {2}' ' –

Antwort

3

Sie diesen grep verwenden kann:

grep -Ev '\bvol([[:blank:]]+[[:digit:]]+){2}' file 

24545454, Dancing on ice vol 5, 454554, 45454545 
5454545, Who is the man, 545456454, 4545454 

Muster ([[:blank:]]+[[:digit:]]+){2} wird passen nach vol mindestens 2 Nummern getrennt durch Leerzeichen/Tab.

+1

Sie haben das richtig verstanden. Mein Muster bezieht sich nicht auf die Linie "Stage Mechanics". –

+1

Ja, perfekt danke – treetop

+1

Ich habe gerade eine neue Frage hinzugefügt, die sich auf diese bezieht: http://stackoverflow.com/questions/38143780/generate-record-of-files-which-habe-been-removed-by-grep-as -a-sekundäre Funktion – treetop