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

Zeilenumbruch erzwingen

Xenon

Member
Hallo Leute,
habe volgendes Problem. Eine Datei besteht aus einer Zeile. Die Zeile sieht wie volgt aus.
merklmal1 /d/a/ten/ merkmal2 /da/te/n merkmal3 /d/at/en/ ............
u. sw.

Ich möchte diese Zeile aber aufspalten. Sobald merkmal vorhanden, sollte eine neue Zeile erstellt werden.
Ergebnis sollte dann so aussehen
merkmal 1 /d/a/ten/
merkmal 2 /da/te/n/
merkmal3 /d/at/en/
.
.
wie kann man es in shell realisieren kein perl.

DANKE!
 
Code:
string="merkmal daten merkmal daten";
for i in $string; do
    if [ -z "$merk" ]; then
        merk="$i";
        continue;
    fi;
    print "Merkmal und Daten: $merk $i";
    unset merk;
done;
oder aber auch:
Code:
string="merk dat merk dat";
set -- string;
while [ $# -gt 0 ]; do
    merk="$1"; shift;
    daten="$1"; shift;
    echo "$merk $daten";
done;
 

TeXpert

Guru
oder noch eine andere Idee:

Code:
$ cat test
merkmal1 /foo/bar merkmal2 /foo/bar2 merkmal3 /foo/bar3
$ sed -e 's#\([^ ]*\) \([^ ]*\) #\1 \2 \n#g' < test
merkmal1 /foo/bar
merkmal2 /foo/bar2
merkmal3 /foo/bar3

oder noch eine zweite :)
Code:
#!/bin/bash

read -a file

for i in $(seq 0 $(( (${#file[@]} / 2 ) -1 )) )
do 
  echo "${file[$((2*$i))]} -> ${file[$((2*$i+1))]}"
done

aufruf:
Code:
script < input
 
Oben