でNULL列値を置き換える:AWK Iは、次のようにサンプルファイルが前の行のカラム値
cat sample.txt
HOST [email protected]
PORT 1066
DATABASE ORACLE_1
SCHEMA DEPT.*;
SCHEMA EMP.*;
DATABASE ORACLE_2
SCHEMA JOB.*;
を上記のサンプルファイルの内容については、私は/ HOSTの隣列だけを印刷したいですPORT/DATABASE/SCHEMA。
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.*;
のすべてのレコードの最後の列は、私は次のように前の行の列値を持つNULL列の値を置き換えるためにAWKを使用することができますどのようにセミコロン(;)
、で終わると仮定すると::だから、私は次のようにそれを達成できました
[email protected] 1066 ORACLE_1 DEPT.*;
[email protected] 1066 ORACLE_1 EMP.*;
[email protected] 1066 ORACLE_2 JOB.*;
ありがとうございました!
返信いただきありがとうございます。あなたは論理を詳しく教えていただけますか? – CodeDevotion
'NF == 1 'というセルの値が1つしかない場合、' c1、c2、c3'変数に以前保存した値を使用します。 2つのセル値「NF == 2」がある場合、以前に保存された値を 'c1、c2'変数に使用します。最後にすべての列が利用可能になったら、列の値を 'c1、c2、c3'変数に保存します(後で使用されます)。 – anubhava
ありがとうございます。このロジックが適切に機能していないよう – CodeDevotion