PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell - script



lehrling2
23.06.02, 13:48
hi,

ich suche eine commandline script (shell) wie folgt.....

ich habe 1 datei mit

"Anfang"
Name_1
Name_2
Name_3
Name_4
usw.
.
.
.
"Ende"

das script soll nun diese zeilen auslesen und jeweils in eine neue datei eine Zeile schreiben...

Also.....
"Anfang"

Name_1.......Neue Datei mit dem Namen "Name_1.txt" erstellen und in diese in der ersten Zeile "Name_1" schreiben

Name_2.......Neue Datei mit dem Namen "Name_2.txt" erstellen und in diese in der ersten Zeile "Name_2" schreiben

Name_3.......Neue Datei mit dem Namen "Name_3.txt" erstellen und in diese in der ersten Zeile "Name_3" schreiben

Name_4.......Neue Datei mit dem Namen "Name_4.txt" erstellen und in diese in der ersten Zeile "Name_4" schreiben
usw.
.
.
.
"Ende"

Wo gibt es Info zur Shell programmierung?

Lehrling

martin
23.06.02, 14:17
In shell bin ich nicht so gut. Darum das Bsp. in Perl:



#################################
#! /usr/bin/perl

$datei=$ARGV[0];
$ordner=$ARGV[1];

if ($datei eq "" || $ordner eq ""){
print "\nUsage: perl script.pl Liste_Datei ZielVerzeichnis\n\n";
}
open (DATEI, "$datei");
while (< DATEI >) { #den abstand zwischen < und Datei und > weglassen
chomp;
$zeile=$_;
open (ZEILE, ">$ordner\/$zeile.txt");
print ZEILE $zeile;
close(ZEILE);

}
close(DATEI);
######################################

Wie gesagt, nur ein grobes Bsp.

martin


ach so geht das, mit Code :D

michael.sprick
23.06.02, 14:17
also in perl kannste es so machen:





#!/usr/bin/perl -W

my $file ="ausgangsdatei.txt";

open(FILE,$file);
@array=<FILE>;
close(FILE);

foreach(@array){
chomp($_);
print `touch $_\.txt`
}

print "Dateien wurde angelegt\n\n\n";




....wenn dieses "Anfang" und "Ende" in der Datei auch drinsteht, musst Du es rausgreppen oder einfach innerhalb des foreach noch einen regex oder ´ne if-bedingung unterbringen...

wäre ´ne Lösung in Perl.
(einfach der Datei ausführechte geben, fertig...)

gruss, B *g*

michael.sprick
23.06.02, 14:19
jo....oder so.

oder nee....vergiss meine Lösung. ich lege die Datei nur an - Martin schreibt auch die erste Zeile....hab ich vergessen. sorry :D

martin
23.06.02, 14:27
Nimm nich mein Bsp. Der hat die Klammern bei mir nicht genommen.
Wozu der Code Tag, wenn er es doch übersetzt. Doofes Board!



So, wenn Du den Abstand weglässt, kannst Du es benutzen

Steve
23.06.02, 15:16
#!/bin/sh
set -x
for i in `cat test`; do
echo $i > $i.txt
done

So sollte es in der Shell gehen !