【发布时间】:2016-02-15 19:11:38
【问题描述】:
我正在尝试通过 awk 解析下面的输入。 如果只有 3 对项目意味着如果有 ID=34、ID2=35、COL3="231,则输出看起来不错。因为我在 printf 中只使用了 4 个字符串变量。 但是,项目的数量(ID/ID2/COL3)会有所不同。这就是问题所在。
即使项目数量不固定,如何打印所有这些项目?
输入
!{ID=34, ID2=35, COL3="231"}
>
!{ID=99, ID2=23}
>
!{ID=18, ID2=87}
<
@{ID=11, ID2=22, COL3="231",COL4="098", COL5="AAA", COL6="BBB"}
UPD1
Awk
BEGIN { FS="[}{[:space:] ]+"; RS="!|@" }
NR > 1 {
printf "%s%s%s#%s\n", $2, $3, $4, $5;
}
输出
ID=34,ID2=35,COL3="231"#>
ID=99,ID2=23>#
ID=18,ID2=87<#
ID=11,ID2=22,COL3="231",COL4="098",#COL5="AAA",
期望的输出
ID=34,ID2=35,COL3="231"#>
ID=99,ID2=23#>
ID=18,ID2=87#<
ID=11,ID2=22,COL3="231",COL4="098",COL5="AAA",COL6="BBB"#UPD1
第二个期望的输出
!#ID=34,ID2=35,COL3="231"#>
!#ID=99,ID2=23#>
!#ID=18,ID2=87#<
@#ID=11,ID2=22,COL3="231",COL4="098",COL5="AAA",COL6="BBB"#UPD1
【问题讨论】:
标签: awk