Mise à jour: selon la suggestion de Jonathan Leffler, si l'une des 10 lignes suivantes contient le motif, le comptage doit commencer à partir de cette ligne afin
pattern ->start printing from here to next 10 lines
blah
blah
pattern ->forget about the last 2 lines, start counting from here
blah
blah
Génial, comment puis-je utiliser cette fonction comme: jobcheck () {awk '/ $ 1 / {pour (i = 0; i <10; i ++) {print; getline}}' $ 2}
J'ai mis à jour la réponse pour cela :)
Notez que si les motifs apparaissent sur les 10 lignes suivantes, vous devez (probablement) réinitialiser le compteur d’impression. Ou concevez-le pour que, lorsque vous trouvez le match, vous définissiez max_print = NR + 10;, puis pour chaque ligne,if (NR < max_print) print
Jonathan Leffler
oui, c'est une bonne suggestion, a mis à jour la réponse :)
hmm J'ai mis cette fonction dans mon ~ / .bashrc car elle est courte mais j'ai une erreur qui dit une erreur de syntaxe: fin inattendue du fichier. Je n'ai même pas mis la fonction à la fin du fichier cependant. Vous savez quel pourrait être le problème?
ça dit option illégale pour moi. Je suis sur bash 3.0.19 je crois
Votre version de grep est l’information importante. grep -V
Fred Thomsen
oui, même c'est une option illégale. Je suppose que mes affaires sont vraiment obsolètes?
@yatici a mis à jour avec une awkapproche
Alex
Vous utilisez peut-être une version allégée de grep. Si vous êtes sur une distribution basée sur RPM, vous pouvez probablement le faire rpm -ql grepou sur une distribution basée sur DEB, dpkg -l greppour obtenir la version.
max_print = NR + 10;
, puis pour chaque ligne,if (NR < max_print) print
Utiliser grep 2.10:
imprimera 10 lignes après le match
Depuis la page de manuel de grep :
Utiliser GNU awk 3.1.8:
la source
awk
approcherpm -ql grep
ou sur une distribution basée sur DEB,dpkg -l grep
pour obtenir la version.J'utiliserais:
ou
la source