• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Der cut-Befehl...eine Frage zum Trennen von Strings

kdannies

Newbie
Hallo!

Meine Frage ist wahrscheinlich nicht schwer, allerdings bin ich offensichtlich zu blöd aus manuals was rauszulesen.

Für ein Script will ich aus einer Datei ganz bestimmte Teilstrings rausziehen. Aufgebaut ist diese wie folgt:

[username1:/project1]
usernamex = r
usernamey = rw
...

[username2:/project2]
usernamea = r
usernameb = rw
...


Im Prinzip brauche ich die Usernamen und Projektnamen. Das mit dem ändern der Trennzeichen, auf die Leerzeile ist nicht das Problem. Ich würde dann aber gerne ab einem bestimmten Zeichen (also zum beispiel dem "/") und bis zu einem bestimmten Zeichen (z.B. dem "]") den cut ausführen, und dazu habe ich keinen Befehl gefunden.

Über eine Lösung würde sich dieser Linux-Anfänger freuen.

MfG Kai
 
Da du dazu einen Automaten mit Register brauchst, eignet sich cut nicht. perl scheint da als kleine Alternative bestens dran (hier in Kurzform):
Code:
perl -lne '$p=$1 if/^\[(\w+)/;/^(\w+)/;print"$p:$1"' <input
 

abgdf

Guru
Sehe ich auch so. Hatte noch eine andere Version gemacht:
Code:
echo '[username2:/project1]' | perl -e 'while(<>){if($_ =~ m/(\/.*\])/){print substr($1, 1, length($1) - 2)."\n"}}'
TMTOWTDI :).

Gruß
 
OP
K

kdannies

Newbie
Danke für die Antwort :)

In der Zwischenzeit ist mir sogar noch ne einfachere Lösung eingefallen:

grep "\[" datei | cut -f 2 | cut -f 1 -d ':'

bekommt mir da die usernames raus, mit nem ähnlichen Konstrukt auch die projektnamen.

Dennoch danke für deine Antwort abgdf

MfG Kai
 
Oben