Palabras separadas por comas en la siguiente línea en un archivo nuevo

Palabras separadas por comas en la siguiente línea en un archivo nuevo

Tengo un archivo de entrada como este (input.txt):

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

Quiero un resultado como este en el archivo de salida (output.txt):

Main1 one
Main1 two
Main1 three
Main1 four

Main2 five
Main2 six
Main2 seven
Main3 eight

Respuesta1

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

Ejemplo:

~) $ 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

Respuesta2

Aquí hay algunas opciones:

  1. Caparazón

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

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

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

información relacionada