デフォルトでは、SourceFieldを含む各行の前にクエリ名を入力したいと思います。
私はこの接続方法を試しました
awk '/<\^Query/ && p{print p;p=""}{p=p $0}END{if(p) print p}'
ただし、これは複数のソースフィールドがある場合にのみ機能します。この場合、すべての行をSourceFieldに関連付けます。
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER SourceField: LO
私のデータは次のとおりです
Query: D Monthly Loan
SourceField: LOAD-NO SourceTable: MASTER
SourceField: LO SourceTable: MASTER
Query: D Monthly Loan
SourceField: HI SourceTable: MASTER2
QUERY: M FORBEARANCE_1
SourceField: LOAN-NO SourceTable: MASTER
出力が次のようになります。
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER
Query: D Monthly Loan SourceField: LO SourceTable: MASTER
Query: D Monthly Loan SourceField: HI SourceTable: MASTER2
Query: M FORBEARANCE_1 SourceField: LOAN-NO SourceTable: MASTER
ベストアンサー1
$ awk '/^ +/{print q, $0; next} {q=$0}' file
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER
Query: D Monthly Loan SourceField: LO SourceTable: MASTER
Query: D Monthly Loan SourceField: HI SourceTable: MASTER2
QUERY: M FORBEARANCE_1 SourceField: LOAN-NO SourceTable: MASTER
または、次の形式のいずれかを好む場合(他の可能性もたくさんあります!):
$ awk 'sub(/^ +/,""){print q, $0; next} {q=$0}' file
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER
Query: D Monthly Loan SourceField: LO SourceTable: MASTER
Query: D Monthly Loan SourceField: HI SourceTable: MASTER2
QUERY: M FORBEARANCE_1 SourceField: LOAN-NO SourceTable: MASTER
$ awk '/^ +/{$1=$1; print q, $0; next} {q=$0}' file
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER
Query: D Monthly Loan SourceField: LO SourceTable: MASTER
Query: D Monthly Loan SourceField: HI SourceTable: MASTER2
QUERY: M FORBEARANCE_1 SourceField: LOAN-NO SourceTable: MASTER
$ awk -v OFS='\t' '/^ +/{$1=$1; print q, $0; next} {q=$0}' file
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER
Query: D Monthly Loan SourceField: LO SourceTable: MASTER
Query: D Monthly Loan SourceField: HI SourceTable: MASTER2
QUERY: M FORBEARANCE_1 SourceField: LOAN-NO SourceTable: MASTER