grep - Muster als Variable

Unixer

Neues Mitglied
Thread Starter
Mitglied seit
08.10.2012
Beiträge
20
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
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.809
Funktioniert bei mir wie erwartet, ebenfalls High Sierra.
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.809
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
 

Olivetti

Aktives Mitglied
Mitglied seit
09.12.2005
Beiträge
11.697
die regex kann ausserdem auf
Code:
grep "${var}$"
gekürzt werden.
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.809
In dem Fall brauchst du glaube ich

Code:
grep -w ${var}
da er ansonsten ${var} als wildcard nutzt.
 

Olivetti

Aktives Mitglied
Mitglied seit
09.12.2005
Beiträge
11.697
noi, wichtig sind halt ", statt ' (${var} wird ja zuerst von der bash ersetzt) und am ende $ (muster: Skype|zeilenende).
 

mj

Aktives Mitglied
Mitglied seit
19.11.2002
Beiträge
8.809
Stimmt, das abschließende $ hab ich übersehen... war ein langer Tag. Du hast natürlich recht.
 

Olivetti

Aktives Mitglied
Mitglied seit
09.12.2005
Beiträge
11.697
ich vermute ein fehlendes end-$ war auch oben sein fehler beim testen.
 

Ähnliche Themen

Oben