2016-11-09 2 views
1

Ich habe die folgende Datei, die wie folgt generiert werden kann, indem Sie Informationen von einer Webseite, aber wie Sie sehen können, fehlen Daten auf Zeilen 4,5,7 & 8:Füllen Spalte in CSV mit vorherigen Wert mit Shell

1,Nov 09 2016,Pakistan,Karachi Stock Exchange,Iqbal Day 
2,Nov 11 2016,Poland,Warsaw Stock Exchange,Independence Day 
3,Nov 14 2016,Colombia,Colombia Stock Exchange,Independence of Cartagena 
4,,India,India National Stock Exchange,Guru Nanak Jayanti 
5,,Sri Lanka,Colombo Stock Exchange,Ill Full Moon Poya Day 
6,Nov 15 2016,Brazil,Sao Paulo Stock Exchange,Republic Day 
7,,Palestinian Territory,Ramallah Stock Exchange,Independence Day 
8,,Sri Lanka,Colombo Stock Exchange,Ill Full Moon Poya Day 

Was würde ich erreichen muß, ist das Datum von row3 Fill in 4 und 5 und das Datum von row6 in 7 & 8, diese Datei mehr als die 8 Zeilen oben haben könnte und alle Leerzeilen erfordern mit dem gefüllt werden, was in der vorherigen Zelle ist. Ich habe alle verschiedenen Arten von Antworten auf Stackoverflow ausprobiert, aber keiner ist in der Lage, das zu tun, was ich benötige.

Antwort

1

Angenommen, die erste Zeile ist vollständig. (mit Datumswert in Spalte 2). Geben Sie diesem awk Einzeiler einen Versuch:

awk -F, -v OFS="," '{$2=$2?$2:d;d=$2}7' file 

Mit Ihrer Eingabe, gibt sie:

1,Nov 09 2016,Pakistan,Karachi Stock Exchange,Iqbal Day 
2,Nov 11 2016,Poland,Warsaw Stock Exchange,Independence Day 
3,Nov 14 2016,Colombia,Colombia Stock Exchange,Independence of Cartagena 
4,Nov 14 2016,India,India National Stock Exchange,Guru Nanak Jayanti 
5,Nov 14 2016,Sri Lanka,Colombo Stock Exchange,Ill Full Moon Poya Day 
6,Nov 15 2016,Brazil,Sao Paulo Stock Exchange,Republic Day 
7,Nov 15 2016,Palestinian Territory,Ramallah Stock Exchange,Independence Day 
8,Nov 15 2016,Sri Lanka,Colombo Stock Exchange,Ill Full Moon Poya Day 
+0

funktioniert ein Genuss Dank sehr viel Kent! – Aidan

Verwandte Themen