2017-11-30 3 views
0

Mit bash, wie kann ich den folgenden Inhalt einer Datei umwandeln:Bash-Datei vor Zeichenfolge basierend auf der Anzahl erstellen

1 apple 
3 orange 
2 cow 

in eine andere Datei, die lautet:

apple 
orange 
orange 
orange 
cow 
cow 
+0

Jedes Wort in einem separaten Zeichenfolge in der neuen Datei gehen. – Alan

+7

Haben Sie etwas versucht? Mit awk kannst du das ganz einfach machen. – codeforester

+0

Sie können dies mit rein Bash (oder POSIX sh) tun, wenn dies eine Voraussetzung ist. Aber warum ... – ilkkachu

Antwort

2

Entdecken AWK Sprache:

  • $1, $2 sind die 1. und 2. Feld jeweils

Der Ausgang:

apple 
orange 
orange 
orange 
cow 
cow 
3

Einfache Lösung nicht awk mit:

while read -r count item; do 
    for((i=0; i<$count;i++)); do 
     echo "$item" 
    done 
done <input_file> output_file 

Or etwas ein wenig mehr exotisch:

while read -r count item; do 
    printf -- "$item\n%0.s" $(seq 1 $count) 
done <input_file> output_file 
1

andere minimalistisch awk

$ awk '{while($1--) print $2}' file 

oder zum Spaß

$ while read c w; do yes $w | head -n $c; done <file 
Verwandte Themen