2017-03-08 5 views
0

nehme ich eine Textdatei der folgende Form habenConverting Blockadresse in CSV-Datei

Name1 
Address 1.1 
Address 1.2 
Pincode 1 

Name2 
Address 2.1 
Address 2.2 
Pincode 2 

Gibt es eine Möglichkeit, ein Skript in sed oder awk zu schreiben, die eine CSV-Datei in der folgenden Form erzeugt

Name1;Address 1.1;Address 1.2;Pincode1 
Name2;Address 2.1;Address 2.2;Pincode2 

Jede Hilfe wird sehr geschätzt. Ich habe eine riesige Textdatei mit einer solchen Adresse und möchte daraus eine Datenbank machen.

+0

Manchmal könnte es Adresse 1.3 in einem Teil der Adresse sein, die es eine zusätzliche Zeile inder Adressblock haben machen – dongrugose

Antwort

2

awk Verwendung als entworfen/bestimmt:

$ awk -v RS= -F'\n' -v OFS=';' '{$1=$1}1' file 
Name1;Address 1.1;Address 1.2;Pincode 1 
Name2;Address 2.1;Address 2.2;Pincode 2 
2

Geben Sie diesem Einzeiler einen Versuch:

awk -v RS="" 'gsub(/\n/,";")' file 
Name1;Address 1.1;Address 1.2;Pincode 1 
Name2;Address 2.1;Address 2.2;Pincode 2 
0

Sie dies versuchen können -

sed '/^$/d' f | awk -v FS=";" ' {ORS=(NR%4==0?RS:FS)}1' 
Name1;Address 1.1;Address 1.2;Pincode 1 
Name2;Address 2.1;Address 2.2;Pincode 2 

Wenn es keine Leerzeile ist, können wir den sed Befehl entfernen. idiomatisch