Bu gönderi, daha önce sorduğum soru için bir değişiklik oldu here. AWK NULL sütun değerlerini bir önceki satırın sütun değerleriyle değiştir (devamı)
Ben örnek dosyada aşağıda olduğunu varsayalım: Yukarıdaki dosyada içeriği içincat sample2.txt
HOST [email protected]
PORT 1066
DATABASE ORACLE_1
SCHEMA DEPT.*;
SCHEMA EMP.*;
DATABASE ORACLE_2
SCHEMA JOB.*;
SCHEMA SALARY.*;
HOST [email protected]
PORT 89
DATABASE MYSQL_1
SCHEMA PURCHASE.*;
DATABASE MYSQL_2
SCHEMA PRICE.*;
SCHEMA PRODUCT.*;
, ben HOST/PORT/VERİTABANI/SCHEMA yanında ve varsayarak aynı anda yalnızca sütunları yazdırmak istiyorum Her satırdaki son sütun noktalı virgülle sonlanır, eksik sütun değerlerini önceki satırın sütun değerleriyle değiştirmek istiyorum.
@anubhava bana benim previous post aşağıdaki şekilde ona yakın bir şey elde etmek yardımcı.
cat sample2.txt | awk 'tolower($0)~/^host|^port|^database|^schema/{printf "%s",$2 OFS;}' | awk -v RS=';' -v ORS=';\n' 'NF' | awk 'NF==1{print c1, c2, c3, $1; next} NF==2{print c1, c2, $1, $2; next} {c1=$1; c2=$2; c3=$3} 1' | sed 's|^[[:blank:]]*||g; s|\;$||g'
[email protected] 1066 ORACLE_1 DEPT.*
[email protected] 1066 ORACLE_1 EMP.*
[email protected] 1066 ORACLE_2 JOB.*
[email protected] 1066 ORACLE_1 SALARY.*
[email protected] 89 MYSQL_1 PURCHASE.*
[email protected] 89 MYSQL_2 PRICE.*
[email protected] 89 MYSQL_1 PRODUCT.*
Ama
[email protected] 1066 ORACLE_1 DEPT.*
[email protected] 1066 ORACLE_1 EMP.*
[email protected] 1066 ORACLE_2 JOB.*
[email protected] 1066 ORACLE_2 SALARY.*
[email protected] 89 MYSQL_1 PURCHASE.*
[email protected] 89 MYSQL_2 PRICE.*
[email protected] 89 MYSQL_2 PRODUCT.*
Teşekkür
Müthiş yazdırırken 0 biz bir değişken
db
Cevabımı ekledim. – anubhava