Avatar billede thebeginner Nybegynder
13. november 2003 - 12:06 Der er 11 kommentarer og
2 løsninger

Slette en linie i en fil

Hej Gruppe !

Jeg vil gerne bede om noget hjælp til at lave et script der kan finde nogle oplysninger i en fil ud fra en gruppe.

Når en person bliver oprettet i filen oprettes oplysningerne således.
$useraccount,$group,$enc_pw,$site,$city,$nada

Når indholdet af denne fil skal vise skal den vise alle der eks. passer på eks. odense - hvor odense ligger i den værdi der hedder $group

Nogen der kan hjælpe med det ?
ellers må jeg se om jeg kan gøre det på en anden måde...

Vh.

TH.B
Avatar billede mfalck Praktikant
13. november 2003 - 12:09 #1
det lyder som noget du hellere skal lægger over i en database !
Avatar billede agercon Nybegynder
13. november 2003 - 12:49 #2
Dog ikke en PERL-løsning men en shell-løsning:

grep -e "^[^,]*,odense," liste

Hvis det skal være mere generelt:

#!/bin/sh
#
# findgroup
#
FILENAME="list_of_persons"
CMDNAME=`basename $0`
if [ $# -ne 1 ]; then
  echo "Usage: $CMDNAME <groupname>" > /dev/stderr
  exit 1
else
  grep -e "^[^,]*,$1," $FILENAME
fi
Avatar billede agercon Nybegynder
13. november 2003 - 12:49 #3
Skulle have været et svar - undskyld
Avatar billede agercon Nybegynder
13. november 2003 - 12:50 #4
Fra linjen startende med #!/bin/sh og ud skal gemmes som en eksekverbar fil.
Avatar billede thebeginner Nybegynder
13. november 2003 - 13:54 #5
Hejsa til jer begge...
Jeg ville meget gerne beholde den metode der bruges nu til lagring af oplysningerne, så den med en database vil jeg gerne udlukke. Men tak for forslaget *S*

Den anden med en shell løsning er jeg ikke glad for :(

Jeg har fundet en rutine her som måske kan laves til et lille script der kan vise brugerne.
**
$pwdfile = "X:\\data\\pwdfile";
elsif ($by_username eq "yes") { <--- Denne kan sikkert fjernes
  open (FILE,">$pwdfile");
foreach $line (@user) {
($useraccount,$group,$enc_pw,$site,$space,$nada)=split(/\:/,$line);
    if ($useraccount ne $username) {
      print FILE "$line";
    }
}
  close (FILE);

Stumpen her er taget ud fra et script der sletter en bruger, men hvordan kan jeg bikse det således at den viser indholdet af filen og kun de bruger der matcher $group ?
Avatar billede agercon Nybegynder
13. november 2003 - 14:02 #6
Er ingen PERL-haj, men jeg vil tro, den skal se således ud:

I funktionen split skal \: erstattes med \, eller blot ,

I if erstattes useraccount med group, ne (ikke lig med) erstattes med eq (lig med) og username erstattes med searchgroup, som så er variabelnavnet på den gruppe du leder efter.

$pwdfile = "X:\\data\\pwdfile";
open (FILE,">$pwdfile");
foreach $line (@user) {
($useraccount,$group,$enc_pw,$site,$space,$nada)=split(/\,/,$line);
    if ($group eq $searchgroup) {
      print FILE "$line";
    }
close (FILE);
Avatar billede breum Nybegynder
13. november 2003 - 20:52 #7
$file="/sti/til/filen/fil.txt"
$match="Odense";

open (INDEXFILE, "$file");
    @lines =  <INDEXFILE>;
close (INDEXFILE);

foreach $line (@lines)
{
($useraccount,$group,$enc_pw,$site,$space,$nada)=split(/\,/,$line);
if ($useraccount eq $match)
{
print "$useraccount,$group,$enc_pw,$site,$space,$nada";
}
}
Avatar billede breum Nybegynder
13. november 2003 - 20:54 #8
ups
if ($group eq $match)
Avatar billede thebeginner Nybegynder
13. november 2003 - 23:19 #9
Hej Med jer.
Jeg har testet begge eksempler, og ved begge får jeg en
'd:\server\usersys\read.pl' script produced no output

Jeg har fuld adgang til serveren ! Hvis dette kan være en nyttig oplysning :)

VH.
Thb
Avatar billede breum Nybegynder
14. november 2003 - 15:44 #10
Prøv lige
$file="/sti/til/filen/fil.txt"


open (INDEXFILE, "$file");
    @lines =  <INDEXFILE>;
close (INDEXFILE);
print @lines;

Har du rettighederne sat korrekt til at kunne læse filen?
Avatar billede thebeginner Nybegynder
16. november 2003 - 12:31 #11
Hej Berum,
Tak for dit svar, jeg har vist fået det til at virke nu.
Mange tak .)

Men jeg kan vist ikke give point :( du har kun kommenteret..
Avatar billede breum Nybegynder
16. november 2003 - 19:50 #12
;-)
Avatar billede thebeginner Nybegynder
17. november 2003 - 07:02 #13
Takker begge to for jeres hjælp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester