在下面awk
我在input
打印出特定标签。但是,我似乎无法将当前输出中的第2行作为第1行。看起来因为input
的格式化方式,这就是为什么output
按照它的方式排序的原因。我似乎无法在awk
中更改它。谢谢你:)。
输入
"barcodedSamples": {"MEV37": {"barcodeSampleInfo": {"IonXpress_007": {"controlSequenceType": "", "expName": "R_2016_09_20_12_47_36_user_S5-00580-7-Medexome",
AWK
awk -F"[]\":{}, ]*" '
{for (i=1; i<NF; i++) {if ($i =="expName") print $(i+1)
if ($i =="barcodeSampleInfo") print $(i+1) " " $(i-1)
}
}
' input
当前输出
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
答案 0 :(得分:1)
您可以在BEGIN函数中创建一个或多个数组。当处理线不打印时。而不是打印按照您想要的顺序附加到这些数组。在END函数中打印出这些数组。
答案 1 :(得分:1)
使用jq:
{
"barcodedSamples" : {
"MEV37" : {
"barcodeSampleInfo" : {
"IonXpress_007" : {
"controlSequenceType" : "",
"expName" : "R_2016_09_20_12_47_36_user_S5-00580-7-Medexome"
}
}
}
}
}
% jq '.barcodedSamples.MEV37.barcodeSampleInfo.IonXpress_007.expName' file.json
"R_2016_09_20_12_47_36_user_S5-00580-7-Medexome"
% node
> j = { "barcodedSamples": {"MEV37": {"barcodeSampleInfo": {"IonXpress_007": {"controlSequenceType": "", "expName": "R_2016_09_20_12_47_36_user_S5-00580-7-Medexome"}}}}}
{ barcodedSamples: { MEV37: { barcodeSampleInfo: [Object] } } }
> console.log(j.barcodedSamples.MEV37.barcodeSampleInfo.IonXpress_007.expName)
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
现在您已了解如何访问任何部件,只需稍微修改一下即可完全满足您的需求
答案 2 :(得分:1)
awk -F\" '{print $(NF - 1)"\n" $8,$4}' file
R_2016_09_20_12_47_36_user_S5-00580-7-Medexome
IonXpress_007 MEV37