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

Per Script eine textdatei ab einer Stelle überschreiben

EgLe

Newbie
Hallo,

gibt es in der Bash oder in C++ eine möglichkeit eine vorhandene Datei einzulesen und diese ab einer bestimmten Zeichenlänge
z.B. 20 Zeichen dieses neu überarbeitet wird, so das dann nach 20
Zeichen automatisch dieses dann in eine neue Zeile geändert wird.

Evtl. es aber wenn das mitten in einem Wort wäre, dieses dann komplett in eine neue Zeile stehen würde.
 

regexer

Advanced Hacker
Ich hoffe, ich verstehe dich richtig. Hier ist ein Lösungsvorschlag in perl. Diese Scriptsprache ist so bei ziemlich jeder Linux- oder Unix-Installation dabei.
Code:
#!/usr/bin/perl

$laenge=20;    # Hier die Zeilenlaenge anpassen
while (<>) {
  chomp;
  $frei=$laenge;
  for $wort (split /\s/) {
    if ($frei == $laenge) {
      print "$wort";
      $frei-=length($wort)
    } elsif ($frei > length($wort)) {
      print " $wort";
      $frei-=length($wort)+1;
    } else {
      print "\n$wort";
      $frei=$laenge-length($wort);
    }
  }
  print "\n";
}
Dieses Script ist wiefolgt zu gebrauchen:
Code:
script.pl <eingabe.txt >ausgabe.txt
# oder auch
cat eingabe.txt | script.pl >ausgabe.txt
 
OP
EgLe

EgLe

Newbie
Hallo notoxp,

herzlichen Dank für dein Script und deiner Antwort. :)

Doch leider hilft es nicht weiter, da die ganze Sache für ein
PPC-Linux Image ist, und da leider kein Perl installiert ist
aus Platzmangel des Speichers :(

Es bräuchte also ein Bashscript zum ausführen, oder ein
C++ Code damit man es evtl. direkt ins Image einkompilieren kann.
 
A

Anonymous

Gast
Mit C kannst du erst mal prinzipiell alles machen, wenn du es logisch erklären kannst.

In einem Script könnte man sowas mit sed machen. Sed ist ein uralter scriptgesteuerter Zeileneditor, ohne den kommt heute immer noch kein UNIX-System aus. In vielen Scripten gibt es sed Aufrufe und der vi bedient sich intern auch dem sed. Allerdings ist sed nicht gerade das was man heute als schnell erlernbar und benutzerfreundlich bezeichnen würde. Also entweder ein schlaues Buch suchen oder dein Problem so genau wie möglich, wenn möglich mit genauen Dateiausschnitten und Änderungsbeispielen, hier ablegen und dann hoffen, dass sich hier einer erbarmt.
siehe ein sed Beispiel zB hier.
http://www.linux-club.de/viewtopic.php?t=25633

robi
 

regexer

Advanced Hacker
EgLe schrieb:
Es bräuchte also ein Bashscript zum ausführen, oder ein C++ Code damit man es evtl. direkt ins Image einkompilieren kann.
Ich habe mich mit C zwar noch nicht beschäftigt, aber das dürfte doch nicht so weit von perl entfernt sein. Mit Bash wird das schon komplizierter, unmöglich dürfte es aber nicht sein. Wenn ich Zeit habe, reiche ich eines Nach. Es wurde schon der Vorschlag "sed" gemacht. Frage: Hast du den "sed" installiert? Oder vielleicht "awk"?
 

TeXpert

Guru
hey, da muss man doch nciht gleich so dicke Geschütze auffahren, Unix: One Job One Tool :)

siehe 'info coreutils formatting' die Werkzeuge der Wahl dürften fmt und fold sein.
Code:
fmt -s -w 20 < input > output
dabei werden allerdings überlange worte nicht umgebrochen da ist fold besser :)

Code:
fold -s -c -w 20 < input > output
 

regexer

Advanced Hacker
TeXpert schrieb:
Code:
fmt -s -w 20 < input > output
Code:
fold -s -c -w 20 < input > output

Das ist anscheinend sogar UNIX System V. Selbst SCO UnixWare hat das. :shock:
Man lernt nie aus. Wer weiß, wie viele "Helferlein" aus meiner Feder überflüssig sind ...
 
Oben