Linux: Text in einer Datei an ein Wort anhängen

Hallo Zusammen

Da ich in Sachen Shell Programmmierung noch ein Noob bin, versuche ich hier mein Glück :wink:
Ich habe Eine Datei in welcher diverse Daten aufgelistet sind.
Nun möchte ich hinter diesen Daten noch ein Text hinzufügen. Also Zeiele für Zeile.
Wie könnte ich dies machen? Geht sowas überhaupt? Kann sowas in einer Schlefe migegeben werden?

Vielen Dank für die Hilfe.
Gruss
Raziel

Hallo Raziel,

in dem Fall würde ich zu Perl greifen. Ist an der Stelle einfacher und Perl gibt’s bei Linux immer gratis mit dazu.

#!/usr/bin/perl

open (IN, „Ausgabedatei“);

@INPUT=;

foreach (@INPUT)
{
chomp ($_);
$write=$_." Dieser Text wird an jede Zeile angehangen";
print OUT $write, „\n“;
}

close (IN);
close (OUT);

Eingabedatei und Ausgabedatei müssen sich unterscheiden.

Bei Bedarf kann ich dir aber auch was in Shell zeigen …

Viele Grüsse,
Thomas

Hallo Thomas

Vielen Dank das ist genau das was ich gesucht habe. Nun komme ich endlich weiter :smile:

Grüsse
Sascha

Hallo Raziel,
mir ist nicht ganz klar in welchem Zusammenhang Du das machen willst. Unter Linux gibt es Text-Editoren wie z.B. kwrite da kann man Text einfügen. Du kannst natürlich in irgend einer Programmiersprache ein Programm schreiben, was solche Sachen macht. Ich glaube Du meinst eher den Texteditor. Wenn Du Fragen hast melde Dich.

Gruß Volkert

Da ich in Sachen Shell Programmmierung noch ein Noob bin,
versuche ich hier mein Glück :wink:
Ich habe Eine Datei in welcher diverse Daten aufgelistet sind.
Nun möchte ich hinter diesen Daten noch ein Text hinzufügen.
Also Zeiele für Zeile.
Wie könnte ich dies machen? Geht sowas überhaupt? Kann sowas
in einer Schlefe migegeben werden?

Hallo Raziel,

soll immer der gleiche Text an die Zeilen angehängt werden?

Falls ja, sähe eine mögliche Lösung so aus:

while read a
do echo „${a}Dein Text“>>neuedatei
done

ich kann leider nicht weiter helfen

Hallo Thomas

Ich habe deine Lösung ein paar Tage getestet und es läuft sehr gut und ohne Probleme.
Jedoch wäre es noch toll wenn anhand des Dateinamens der Ausgabetext gespeichert würde.

Also: :blush:write=$_." Dieser Text wird an „$DATEINAME“ jede Zeile"

Die Dateien befinden sich alle im gleichen Ordner und sollen nacheinander geöffnet, Editiert und in die Ausgabedatei geschrieben werden.

Also: open (IN, "

Hallo Sascha,

noch mal sorry, dass die Antwort etwas länger gedauert hat …

Versuch mal folgendes Script:

(Anm.: $in_dir gibt das Verzeichnis an, in dem deine Dateien liegen,
$out_dir gibt das Verzeichnis an, in dem die Dateien nach der Änderung
unter gleichem Namen geschrieben werden. Entsprechend sollten $in_dir
und $out_dir natürlich möglichst nicht die gleichen sein … :wink: Du
bekommst durch den find immer volle Pfade zurückgeliefert, so dass der
split das ganze für jede Datei mit / als Trennzeichen zerhackt, in ein
Array packt und nachher immer nur mit dem letzten Arrayeintrag weiter
arbeitet, da dieser ja den Dateinamen ohne Pfad darstellt.)

#!/usr/bin/perl

$in_dir=’/root/scripts/wewewa/files/’;
$out_dir=’/root/scripts/wewewa/output/’;

@files=find $in_dir -type f;
chomp (@files);

foreach (@files)
{
@string = split(///, $_);
chomp (@string);
$anz_string = $#string;

open (IN, „$out_dir$string[$anz_string]“);

@INPUT=;

foreach (@INPUT)
{
chomp ($_);
$write=$_." Dieser Text wird an jede Zeile angehangen";
print OUT $write, „\n“;
}

close (IN);
close (OUT);
}

Viele Grüsse,
Thomas

1 Like