J'ai un fichier texte comme celui-ci:AWK Group par après n nombre de lignes
lqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqk
xtable_name xcolumn_name xother_info x
tqqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqqqqqnqqqqqqqqqqqqqu
xqs_tab1 xcol01 xblahblah01 x
xqs_tab1 xcol02 xblahblah02 x
xqs_tab1 xcol03 xblahblah03 x
xqs_tab2 xcol09 xblahblah04 x
xqs_tab2 xcol01 xblahblah05 x
xqs_tab2 xcol02 xblahblah06 x
xqs_tab2 xcol03 xblahblah07 x
xqs_tab2 xcol04 xblahblah08 x
xqs_tab2 xcol05 xblahblah09 x
xqs_tab2 xcol06 xblahblah10 x
xqs_tab3 xcol01 xblahblah11 x
xqs_tab3 xcol02 xblahblah12 x
mqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqj
Je voudrais obtenir un nombre de colonnes dans chaque table comme ceci:
qs_tab1, 3
qs_tab2, 7
qs_tab3, 2
Après avoir lu une question similaire sur ce forum, j'ai créé le script suivant:
#!/bin/sh
awk '
BEGIN { FS=" x";}
{
tablename[$1]++;
}
END { for (i in tablename) {
print tablename[i], i;
}
}
'
Cela m'obtient la plupart du chemin, mais je voudrais manquer les 3 premières rangées et la dernière rangée.
J'ai essayé de mettre des instructions de type if (NR > 3)
à différents endroits, mais j'ai toujours des erreurs.
Je voudrais également éviter le premier "x"
dans chaque rangée - cependant ceci est moins un problème.