awk对输出文件中的行重新排序

awk对输出文件中的行重新排序,awk,jq,nodejs,Awk,Jq,Nodejs,在下面的awk中,我正在输入中打印特定的标签。然而,我似乎无法将当前输出中的第2行设置为第1行。它看起来像是因为输入的格式,这就是为什么输出是按原样排序的。我似乎无法在awk中更改它。谢谢:) 输入 "barcodedSamples": {"MEV37": {"barcodeSampleInfo": {"IonXpress_007": {"controlSequenceType": "", "expName": "R_2016_09_20_12_47_36_user_S5-00580-7-Med

在下面的
awk
中,我正在
输入中打印特定的标签。然而,我似乎无法将当前输出中的第2行设置为第1行。它看起来像是因为
输入
的格式,这就是为什么
输出
是按原样排序的。我似乎无法在
awk
中更改它。谢谢:)

输入

"barcodedSamples": {"MEV37": {"barcodeSampleInfo": {"IonXpress_007": {"controlSequenceType": "", "expName": "R_2016_09_20_12_47_36_user_S5-00580-7-Medexome",
IonXpress_007 MEV37
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
IonXpress_007 MEV37
awk

awk -F"[]\":{}, ]*" '
    {for (i=1; i<NF; i++)   {if ($i =="expName") print $(i+1)
                             if ($i =="barcodeSampleInfo") print $(i+1) " " $(i-1)
                            }
    }
' input
所需输出

"barcodedSamples": {"MEV37": {"barcodeSampleInfo": {"IonXpress_007": {"controlSequenceType": "", "expName": "R_2016_09_20_12_47_36_user_S5-00580-7-Medexome",
IonXpress_007 MEV37
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
IonXpress_007 MEV37

可以在BEGIN函数中创建一个或多个数组。处理时不打印行。不要打印,而是按照您想要的顺序附加到这些数组。在结束函数中,打印出这些数组。

使用:

输入文件 命令 输出 或与: 注
现在您已经了解了如何访问任何部分,只需修改一下,以完全满足您的需要

有没有理由用非JSON解析器的东西解析JSON???没有理由,我只是稍微熟悉一下
awk
(多一点=仍在学习)谢谢:)。不要用awk或regex解析JSON,使用JQ或带有JSON解析器的语言(非常感谢:)虽然这段代码可能有助于解决这个问题,但它没有解释为什么和/或如何回答这个问题。提供这种额外的环境将大大提高其长期教育价值。请在回答中添加解释,包括适用的限制和假设。
awk -F\" '{print $(NF - 1)"\n" $8,$4}'  file

R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
IonXpress_007 MEV37
awk -F\" '{print $(NF - 1)"\n" $8,$4}'  file

R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
IonXpress_007 MEV37