我基本上想将查询的名称放在包含 SourceField 的每一行前面。
我试过这个串联方案
awk '/<\^Query/ && p{print p;p=""}{p=p $0}END{if(p) print p}'
Run Code Online (Sandbox Code Playgroud)
但这仅适用于我有多个源字段。发生这种情况时,它将所有行与 SourceField 连接起来:
Query: D Monthly Loan SourceField: LOAD-NO SourceTable: MASTER SourceField: LO
Run Code Online (Sandbox Code Playgroud)
我的数据是:
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
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
或者如果您更喜欢这些格式中的任何一种(还有许多其他可能性!):
$ 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
Run Code Online (Sandbox Code Playgroud)