2017-05-25 4 views
1

Ich habe unter Skript, um Newline-Zeichen aus einem | Begrenzte Datei. Dieser Befehl funktioniert auf dem lokalen Host einwandfrei. Aber gibt blank Ausgang, während auf Linux-Server läuftgawk Befehl geben leere Ausgabe beim Ausführen auf dem Server

gawk -v RS="[^|]+([|][^|]+){2}\n" '{ gsub("\n", " ", RT); print RT}' 

Im Folgenden wird die Ausgabe, die ich auf dem lokalen Host bin immer
$cat sample.csv
$ No|Name|sal
2|gkdjkh|554
3|fgh
cvb|678
4|tyu|789
5|ghl
tyu|5677
6|yyui
tyui
uui|780

Tarun [email protected] ~
$ gawk -v RS="[^|]+([|][^|]+){2}\n" '{ gsub("\n", " ", RT); print RT}' sample.csv
$ No|Name|sal
2|gkdjkh|554
3|fgh cvb|678
4|tyu|789
5|ghl tyu|5677
6|yyui tyui uui|780

+0

Veröffentlichen Sie Ihren Code als Nur-Text, keine Screenshots. – Barmar

+0

Vielleicht hast du verschiedene Versionen von 'gawk'. Was zeigt 'gawk --version'? – Barmar

+0

Die Variable 'RT' wurde in 3.0 hinzugefügt. – Barmar

Antwort

1

RE-Intervalle wurden nur Standard in Gawk 4.0. Ändern Sie Ihr Skript zu:

gawk --re-interval -v RS='[^|]+([|][^|]+){2}\n' '{ gsub(/\n/, " ", RT); print RT}' 

und es wird in beiden gawk-Versionen funktionieren. Oder noch besser, lassen Sie sich von all Ihren Maschinen überraschen.

+1

Vielen Dank ** Ed Morton **. Das hat mein Problem gelöst. –

Verwandte Themen