需要从以下数据中提取下面给出的输出,最好是(sed或awk):

时间:2017-11-01 12:14:01

标签: linux unix

romlogNF.102516.gz:10/25/16 03:38:32 OUT ID=123456789-1-3  <rpy><ord_sts><sess_id>102422345678</sess_id><rtn_cde>-44</rtn_cde><code_nbr>1940</code_nbr><stg_ord_nbr>0</stg_ord_nbr><inv_nbr>0</inv_nbr><prj_nbr>0</prj_nbr></ord_sts></rpy>
romlogNF.102616.gz:10/26/16 04:38:32 OUT ID=123456789-1-3  <rpy><ord_sts><sess_id>202422345945</sess_id><rtn_cde>-44</rtn_cde><code_nbr>1942</code_nbr><stg_ord_nbr>0</stg_ord_nbr><inv_nbr>0</inv_nbr><prj_nbr>0</prj_nbr></ord_sts></rpy>

需要输出:

ID=123456789-1-3 <code_nbr>1940</code_nbr>
ID=123456789-1-3 <code_nbr>1942</code_nbr>

1 个答案:

答案 0 :(得分:0)

试试这个:

awk -v FS="[[:space:]]|<code_nbr>|</code_nbr>" '{print $4,"<code_nbr>"$7"</code_nbr>"}'

在awk中,FS用于字段分隔符,使用管道符号(“|”),可以设置多个字段分隔符。在这种情况下,我将字段分隔符设置为空格,并将标记设置为“&lt; code_nbr&gt;”和“&lt; / code_nbr&gt;”。