ich eine Beispieldatei, wie folgend haben:AWK NULL-Spaltenwerte mit Spaltenwerte der vorherigen Reihe ersetzen
cat sample.txt
HOST [email protected]
PORT 1066
DATABASE ORACLE_1
SCHEMA DEPT.*;
SCHEMA EMP.*;
DATABASE ORACLE_2
SCHEMA JOB.*;
Für den Inhalt in der obigen Beispieldatei, ich möchte neben HOST nur die Spalten drucken/PORT/DATENBANK/SCHEMA. Also, ich könnte das erreichen, wie folgend:
cat sample.txt | awk 'tolower($0)~/^host|^port|^database|^schema/{printf "%s",$2 OFS;}' | awk -v RS=';' -v ORS=';\n' 'NF'
[email protected] 1066 ORACLE_1 DEPT.*;
EMP.*;
ORACLE_2 JOB.*;
die letzte Spalte in jedem Datensatz Unter der Annahme, endet mit Semikolon (;)
, Wie kann ich AWK verwenden, um NULL-Spaltenwerte mit den Spaltenwerten der vorherigen Zeile zu ersetzen, wie folgend:
[email protected] 1066 ORACLE_1 DEPT.*;
[email protected] 1066 ORACLE_1 EMP.*;
[email protected] 1066 ORACLE_2 JOB.*;
Vielen Dank im Voraus.!
Vielen Dank für die Antwort. Können Sie bitte die Logik ausarbeiten? – CodeDevotion
Wenn es nur einen Zellenwert 'NF == 1' gibt, dann verwenden wir zuvor gespeicherte Werte in' c1, c2, c3' Variablen. Wenn es zwei Zellenwerte "NF == 2" gibt, verwenden wir zuvor gespeicherte Werte in 'c1, c2'-Variablen. Schließlich, wenn alle Spalten verfügbar sind, speichern wir die Spaltenwerte in 'c1, c2, c3' Variablen (später zu verwenden). – anubhava
Danke für die Erklärung. – CodeDevotion