Nehmen wir an, Ihre Datei hat den Namen test1
Der ganze Befehl sieht dann so aus (in einer Zeile):
names=$(cat test1 | sed -n "/[a-zA-Z]/p" | sed "s/$/;/g") && names2=($) && for var in "$"; do numbers=$(cat test1 | sed -n "/$var/" | sed "s/\s/;/g"); numbers2=($); for num in "$"; do echo "$var,$num"; done; done
Sehen Sie sich dieses Skript zur besseren Übersicht an:
names=$(cat test1 | sed -n "/[a-zA-Z]/p" | sed "s/$/;/g") names2=($) for var in "$"; do numbers=$(cat test1 | sed -n "/$var/" | sed "s/\s/;/g") numbers2=($) for num in "$"; do echo "$var,$num" done done
Nun möchte ich alle Teile des Befehls beschreiben
BESCHREIBUNG DES BEFEHLS
Der Befehl names=$(cat test1 | sed -n "/[a-zA-Z]/p" | sed "s/$/;/g")
gibt mir eine Liste der Namen, die in Ihrem Fall durch ein Semikolon getrennt sind Kerala;Delhi;Goa
. Ich möchte sie in dieser Form haben, da ich sie jetzt mit dem zweiten Befehl in ein Array umwandeln kann names2=($)
. Jetzt durchlaufe ich alle Namen, was mit der ersten for
Schleife erledigt wird.
Der Befehl numbers=$(cat test1 | sed -n "/$var/" |sed "s/\s/;/g");
gibt mir die Nummern für die aktuelle Variable $var
. Dh Kerala
dafür wäre es 4222;8129;8163;8164
. Das Verhalten ist dasselbe wie beim ersten Befehl: Ich möchte sie in ein Array umwandeln, damit ich sie durchlaufen kann, was mit dem nächsten Befehl erledigt wird numbers2=($);
. Jetzt durchlaufe ich die Zahlen und drucke sie auf den Bildschirm
for num in "$"; do echo "$var,$num"; done
Ich hoffe das ist verständlich.