Ich versuche, eine Spalte hinzuzufügen, wenn zwei vorherige Felder bereits in einer Datei gefunden wurden.Bash - wenn zwei Spalten übereinstimmen, dann Spalte anhängen
Ich habe eine Komma-getrennte Datei mit einer großen Anzahl von Einträgen und ich muss alle Zeilen finden, die auf zwei Spalten übereinstimmen, die zweite Spalte und die siebte. Wenn beide in mehreren Zeilen gefunden werden, fügen Sie eine achte Spalte hinzu, die "shared" sagt.
Dateiinhalt:
WPC PROD LINUX O,1808,4194304000,10,3G,4G,66314
WPC PROD LINUX O,1809,3145728000,10,3G,4G,66314
WPC PROD LINUX O,1812,4194304000,10,3G,4G,66314
WPC PROD LINUX,1808,4194304000,10,1D,2D,66314
WPC PROD LINUX,1809,3145728000,10,1D,2D,66314
WPC PROD LINUX,1812,4194304000,10,1D,2D,66314
WPCESXCS40BP01_0,1808,4194304000,10,1D,2D,66314
WPCESXCS40BP01_0,1809,3145728000,10,1D,2D,66314
WPCESXCS40BP01_0,1812,4194304000,10,1D,2D,66314
Ausgang gewünscht:
WPC PROD LINUX O,1808,4194304000,10,3G,4G,66314,shared
WPC PROD LINUX O,1809,3145728000,10,3G,4G,66314,shared
WPC PROD LINUX O,1812,4194304000,10,3G,4G,66314,shared
WPC PROD LINUX,1808,4194304000,10,1D,2D,66314,shared
WPC PROD LINUX,1809,3145728000,10,1D,2D,66314,shared
WPC PROD LINUX,1812,4194304000,10,1D,2D,66314,shared
WPCESXCS40BP01_0,1808,4194304000,10,1D,2D,66314,shared
WPCESXCS40BP01_0,1809,3145728000,10,1D,2D,66314,shared
WPCESXCS40BP01_0,1812,4194304000,10,1D,2D,66314,shared
Ich habe gesucht und gefunden diesen Link Awk - matching on 2 columns for differents lines aber es ist nicht ganz das tut, was ich brauche, es passt nur auf den folgenden Linie.
Ich könnte so etwas tun:
while IFS=',' read host device blk poolnum porta portb serial
ldev_count=`cat outputtest.txt | grep -iw $device | grep -iw $serial | wc -l`
if [[ $ldev_count > 1 ]] ; then
echo "$host, $device, $blk, $poolnum, $porta, $portb, $serial, SHARED" >> semifinal.txt
else
echo "$host, $device, $blk, $poolnum, $porta, $portb, $serial" >> semifinal.txt
fi
done < outputtest.txt
Aber es ist extrem langsam. Ich hoffe, eine bessere Lösung zu finden.
Danke für jede Hilfe.
Könnten Sie bitte die zweite und die siebte Spalte hier hervorheben, ich meine vielleicht eine gewisse Verwirrung, da ich nicht sehen kann, dass diese 2 Spalten in Ihrer Frage gleich sind? Könnten Sie sie bitte hervorheben? – RavinderSingh13
bearbeitet die Formatierung, um die Lesbarkeit zu verbessern. –
Ok, Sie sagen also, wenn die Spalten '2 & 7' zwischen zwei beliebigen Zeilen geteilt werden (zB' 1808' und '66314'), möchten Sie' 'shared" 'an das Ende beider gemeinsamer Zeilen anhängen ? –