12
votes

faire une partie d'une ligne après grep

J'ai un fichier énorme sur mon serveur UNIX à partir duquel j'ai besoin d'extraire certaines pièces

Le format de la ligne est xxx

i Utilisez la commande xxx

filtrer certaines lignes que je veux. Je veux seulement que l'horodatage partiel et les 9 derniers caractères de la ligne soient renvoyés, pas la ligne complète. Comment puis-je faire ça?


0 commentaires

7 Réponses :


11
votes

Utiliser awk (1) : xxx


0 commentaires

1
votes

Vous pouvez utiliser awk code> comme suit:

grep LATENCY file.log | grep CMDTYPE=NEW | awk '{print $2,substr($0,length($0)-9,9)}'


2 commentaires

Utiliser n'utiliserais pas 0 $ Assurez-vous d'afficher la fin de la ligne au lieu de la fin du troisième mot?


@Yannick: Oui, j'ai supposé sans raison que "CommandInformation" ne serait qu'un mot. Correction du post avec votre suggestion, merci!



0
votes

Pas besoin d'utiliser Grep, Awk peut faire cela aussi:

awk '/LATENCY/ && /CMDTYPE=NEW/ {print $2 " " substr($0, length($0)-8)}' file


0 commentaires

2
votes

Je vais argumenter Perl est un meilleur choix que AWK ici:

perl -ne 'next if ! (/LATENCY|CMDTYPE=NEW/ && /^\d+.*\s+(.*)\s+.*(.{9})$/); print "$2 $3\n";'


0 commentaires

0
votes

Vous pouvez tout faire avec SED seul: xxx


0 commentaires

11
votes

couper doit faire le travail xxx


1 commentaires

Modifier la file d'attente est complète, mais voici un lien utile pour Couper Utilisation: ComputerHope .com / Unix / utact.htm



1
votes

Vous pouvez tout faire avec grep à l'aide de -o qui sortit uniquement la correspondance et non la ligne entière.

supposant que vous puissiez créer une regex pour l'horodatage et le reste de la ligne, vous pouvez simplement ajouter: xxx

[réponse ajoutée pour quelqu'un d'autre qui atterrit ici tenter d'extraire une partie d'une ligne utilisant grep où la regex est la partie qu'ils veulent extraire.]


0 commentaires