Durch Komma getrennte Wörter zur nächsten Zeile in der neuen Datei

Durch Komma getrennte Wörter zur nächsten Zeile in der neuen Datei

Ich habe eine Eingabedatei wie diese (input.txt):

Main1 one,two,three,four 
Main2 five,six,seven,eight 

Ich möchte eine Ausgabe wie diese in der Ausgabedatei (output.txt):

Main1 one
Main1 two
Main1 three
Main1 four

Main2 five
Main2 six
Main2 seven
Main3 eight

Antwort1

awk '{ split($2,a,","); for (i in a) print $1, a[i]; }' input.txt

Beispiel:

~) $ echo -e "Main1 one,two,th\nMain2 five,six,seven,eight " | awk '{ split($2,a,","); for (i in a) print $1, a[i]; }'
Main1 one
Main1 two
Main1 th
Main2 five
Main2 six
Main2 seven
Main2 eight

Antwort2

Hier sind einige Möglichkeiten:

  1. Hülse

    while read main rest; do 
        for i in ${rest//,/$'\n'}; do 
            echo $main $i
        done
     done < file 
    
  2. Perl

    perl -lane 'print "$F[0] $_" for split(/,/,$F[1])' file
    
  3. awk

    awk -F'[, ]' '{for(i=2;i<=NF;i++){print $1,$i}}' file
    

verwandte Informationen