Aus 'abcd' mach' 'dcba' ?

Kann mir jemand bei folgendem Problem (hier als Beispiel) helfen?

Ich habe eine Datei xy1 mit folgenden Zeilen:
abcd
efgh
ijkl
mnop
Nun suche ich nach einem Script, womit ich eine neue Datei xy2 folgenden Inhalts erzeugen kann:
dcba
hgfe
lkji
ponm
Jede Zeile soll einfach nur rückwärts geschrieben sein.

Wahrscheinlich wird das Script so ähnlich lauten wie:

cat xy1 | while read zeile
do
zeile1=$zeile | cut -c 1
zeile2=$zeile | cut -c 2
zeile3=$zeile | cut -c 3
zeile4=$zeile | cut -c 4
zeile-neu=$zeile4+$zeile3+$zeile2+$zeile1
echo $zeile-neu >> xy2
done

Jetzt steht die Frage, wie bekomme ich eine jeweils neue Zeile an eine neue Datei angehangen?

Vielleicht hat jemand so eine Aufgabe schon bearbeitet und kann mir beim Lösen behilflich sein!
Mit vielen Grüßen —> Mayo

Kann mir jemand bei folgendem Problem (hier als Beispiel)
helfen?

Ich habe eine Datei xy1 mit folgenden Zeilen:
abcd
efgh
ijkl
mnop
Nun suche ich nach einem Script, womit ich eine neue Datei xy2
folgenden Inhalts erzeugen kann:
dcba
hgfe
lkji
ponm
Jede Zeile soll einfach nur rückwärts geschrieben sein.

Wahrscheinlich wird das Script so ähnlich lauten wie:

cat xy1 | while read zeile
do
zeile1=$zeile | cut -c 1
zeile2=$zeile | cut -c 2
zeile3=$zeile | cut -c 3
zeile4=$zeile | cut -c 4
zeile-neu=$zeile4+$zeile3+$zeile2+$zeile1
echo $zeile-neu >> xy2
done

Diese Funktion etwas kleiner :

#Schleife für hole Wort aus file ----- START

init 2

ANZ=0 ; REV=""

get Anzahl character in Wort

ANZ=echo $WORT \> wc -c

cut von rechts nach links und „klebe“ wieder zusammen

while $ANZ > 0 ; do
REV=$REVecho $WORT | cut -c $ANZ
$ANZ=$[$ANZ -1]
done
#So das wort ist gedreht–>jetzt ab in neues file
echo $REV >> /tempfile.$$

Schleife für hole Wort aus file STOP

usw…

#cleanup
#tmpdatei.PIDnummer kopieren und dann löschen

cp /tempfile.$$ /neufile && rm /tempfile.$$

Hoffe das hilft

Phagsae

Hab mich dann doch mal real damit beschäftigt hier dass Ergebniss

Das funktioniert – Allerdings keine Rakete
Sowas sollte man besser mit C programmieren :smile:

Falls kein Outfile angegeben ist
Erstellt das skript eine sicherungskopie und kopiert in das Inputfile !!!

#!/bin/sh

© '2001, off/beat S.S.E.

Ralf Frare

24.09.2001

rotiert wort in file abcde -> edcba

Wer zum Teufel braucht eigentlich sowas ???

Usage : wrotate /inputfile

INFILE=$1
OUTFILE=$2
INOUT=false

if [-z $INFILE] ; then echo „Input file not found“ ; exit ; fi
if [-z $OUTFILE] ; then cp $INFILE $INFILE.$$save
OUTFILE=$INFILE ; INOUT=true ; fi

sub wort rotieren

do_rotate ()
{
drow=""
ANZ=echo $1 | wc -c
while [$ANZ -gt 0] ;
do
drow=$drow echo $1 | cut -c $ANZ
ANZ=$[$ANZ -1]
done
echo $drow >> /tmpfile.$$
}

FILE=cat $INFILE
WANZ=echo $FILE | wc -w
set $FILE
while [$WANZ -gt 0] ;
do
word=$1
do_rotate $word
WANZ=$[$WANZ -1]
shift 1
done

if [$INOUT]
then cp /tmpfile.$$ $OUTFILE && rm /tmpfile.$$
else cp /tmpfile.$$ $INFILE && rm /tmpfile.$$

fi
exit

Hallo zusammen,

In perl geht das kurz und schmerzlos:

#!/usr/bin/perl -w
$argn = @ARGV;
unless ($argn == 2){
print „Usage: rotate INFILE OUTFILE\n“;
exit(1);
}
open (FILEIN, $ARGV[0]) || die „Cannot open file: $!“;
open (FILEOUT, „>$ARGV[1]“) || die „Cannot open file: $!“;
while () {
$s = reverse $_;
print FILEOUT $s;
}
close FILEOUT;
close FILEIN;

ENDE

gruss,

Ubaldo

Hallo zusammen,

Jo da kann der neid einen fressen…

$s = reverse $_;

Dös Ding brachhatma hoid in da schell
Nachad gings aaa kiaza.

Phagsae ( zur zeit akustisch O-Fest berieselt )

Kann mir jemand bei folgendem Problem (hier als Beispiel)
helfen?

Ich habe eine Datei xy1 mit folgenden Zeilen:
abcd
efgh
ijkl
mnop
Nun suche ich nach einem Script, womit ich eine neue Datei xy2
folgenden Inhalts erzeugen kann:
dcba
hgfe
lkji
ponm
Jede Zeile soll einfach nur rückwärts geschrieben sein.

Mit UNIX-Boadmitteln ginge es so:

rev zieldatei

Alles Gute
Michael