PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PERL: regexp frage...



Roki
19-07-2010, 14:31
Hallo,

ich möchte die Benutzer, die nur mit dem erste Anfangsbuchstaben (des Vornamen) und anschließendem Nachnamen eingetragen sind, von den Benutzern die mit vollem ausgeschriebenen Vor -und Nachnamen eingetragen sind, trennen.

die Benutzer sind in einer passwd Datei eingetragen

passwd


vorname.nachname1:TEeSmoyolFbmU
vorname.nachname2:TEwfmFV32A2..
vorname.nachname3:TEOY7J0e4k/u6
vorname.nachname4:evE8LQZSMFAyE
v.nachname1:8LSzwM6iMIeZI
v.nachname2:Gxtr55Iner2EQ
v.nachname3:y.MT.R5vOEiIg
v.nachname4:OyluhWGXOA3h6


also,
v.nachname1:8LSzwM6iMIeZI
v.nachname2:Gxtr55Iner2EQ
v.nachname3:y.MT.R5vOEiIg
v.nachname4:OyluhWGXOA3h6

soll von den anderen getrennt werden und in extra datei gespeichert werden.

und hier ist das Script was noch nicht fertig ist da mir das wissen fehlt:


#!/usr/bin/perl -w

use strict;

my ($passwd, @inhalt, @csv, @trennen, $benutzer, $a);

$passwd = "passwd";

if (! -z $passwd) {
open CSV, $passwd;
@csv = <CSV>;
close CSV;

foreach (@csv) {
chomp;
@trennen = split(/:/,$_);
$benutzer = $trennen[0];
my @v = split(/\./, $benutzer);
print $v[0] . "\n";

}

}


kann mir da jemand erklären wie ich das machen kann?

Danke im voraus.

LG,
Roki

msi
19-07-2010, 16:19
so zum beispiel




# alle user die als zweites zeichen einen "." haben
# in die datei vornameMitEinemBuchst schreiben und ausgeben
perl -ne 'print if /^.\./' passwd | tee vornameMitEinemBuchst

# aus der urspr. Datei alle diese einträge löschen
# passwd.bak anlegen für ein backup der alten Version
perl -i.bak -ne 'print unless /^.\./' passwd

Roki
19-07-2010, 16:59
Hallo msi,

DANKE! es funktioniert... :-)

Gruss,
Roki