grep - Muster als Variable

U

Unixer

Mitglied
Thread Starter
Dabei seit
08.10.2012
Beiträge
20
Reaktionspunkte
0
Hallo,

könnte jemand das für mich auf einem Mac testen?

Dateiname: Data.txt

Code:
...
3754  Skype Helper 
375  Skype Helper 
37  Skype
...

Dateiname: shell.sh

Code:
#!/bin/bash

IFS='
'
var="Skype"

grep "[0-9]\+[[:space:]]\+${var}$" /Users/run/Documents/Data.txt >> /Users/run/Documents/output.txt
 
grep -E "[0-9]+[[:space:]]+${var}$" /Users/run/Documents/Data.txt >> /Users/run/Documents/output.txt


Die Ausgabe, die ich bekommen sollte:

Code:
37  Skype

aber Ich bekomme das:

Code:
3754  Skype Helper 
375  Skype Helper 
37  Skype


Desweiteren sollte ich dazu sagen, daß ich auf einem Macbook Pro (MacOS High Sierra) arbeite.

Danke
 
Funktioniert bei mir wie erwartet, ebenfalls High Sierra.
 
Funktioniert bei mir wie erwartet, ebenfalls High Sierra.

was funktioniert bei Dir wie erwartet

condorito.jpg
 
Die Ausgabe, was sonst? :noplan: Du hast mich nicht gefragt ob meine Klimaanlage funktioniert wie erwartet, oder der 5. Zylinder meines Motors ordentlich in Reihe zündet sondern ob die Ausgabe so kommt wie erwartet :D

Und genau das ist bei mir der Fall:

iMac:~ martin$ cat Data.txt
...
3754 Skype Helper
375 Skype Helper
37 Skype
...
iMac:~ martin$ cat shell.sh
#!/bin/bash
IFS='
'
var="Skype"
grep "[0-9]\+[[:space:]]\+${var}$" Data.txt
iMac:~ martin$ cat shell2.sh
#!/bin/bash
IFS='
'
var="Skype"
grep -E "[0-9]+[[:space:]]+${var}$" Data.txt
iMac:~ martin$ ./shell.sh
37 Skype
iMac:~ martin$ ./shell2.sh
37 Skype
 
die regex kann ausserdem auf
Code:
grep "${var}$"
gekürzt werden.
 
In dem Fall brauchst du glaube ich

Code:
grep -w ${var}

da er ansonsten ${var} als wildcard nutzt.
 
noi, wichtig sind halt ", statt ' (${var} wird ja zuerst von der bash ersetzt) und am ende $ (muster: Skype|zeilenende).
 
Stimmt, das abschließende $ hab ich übersehen... war ein langer Tag. Du hast natürlich recht.
 
ich vermute ein fehlendes end-$ war auch oben sein fehler beim testen.
 
Zurück
Oben Unten