以下を変換するには、スクリプトを作成する必要があります。
Name = x:y
Z = a:b.c
Z1 = a1:b1.c1
End
Name=x1:y1
Z2 = a2:b2.c2
Z3 = a3:b3.c3
Z4 = a4:b4.c4
End
Name = l:k
s = w:e.v
End
入力する:
x:y Z a:b.c
x:y Z1 a1:b1.c1
x1:y1 Z2 a2:b2.c2
x1:y1 Z3 a3:b3.c3
x1:y1 Z4 a4:b4.c4
l:k s w:e.v
ベストアンサー1
=
オプションの周囲のスペースを区切り文字として使用します。
awk -F '[[:blank:]]*=[[:blank:]]*' '
$1 == "Name" {name = $2; next}
$1 != "End" {print name, $1, $2}
' filename
はい
これらの解決策を見ると、awk
進行状況が少し混乱していることがわかります。正しく配置された印刷ドアを挿入すると、何が起こっているのかを視覚的に見ることができます。
$ awk -F '[[:blank:]]*=[[:blank:]]*' '
$1 == "Name" { name = $2; print "--NAME: "$2; next };
$1 != "End" { print " --END: "name,$1,$2 }
' sample.txt
次の出力が生成されます。
--NAME: x:y
--END: x:y Z a:b.c
--END: x:y Z1 a1:b1.c1
--NAME: x1:y1
--END: x1:y1 Z2 a2:b2.c2
--END: x1:y1 Z3 a3:b3.c3
--END: x1:y1 Z4 a4:b4.c4
--NAME: l:k
--END: l:k s w:e.v