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