Le blog de Fatiha

Une geek de plus !

Ne pas afficher les noms de fichiers dans les résultats d’un grep

 

Si vous souhaitez rechercher un motif dans plusieurs fichiers, un grep classique vous renverra le résultat suivant :

/répertoire/fichier1:ligne contenant le motif recherché

/répertoire/fichier2:ligne contenant le motif recherché

/répertoire/fichier3:ligne contenant le motif recherché

Ensuite, si vous souhaitez parser ces lignes, cela devient un peu plus difficile. Du coup, mieux vaut ne pas afficher du tout les noms de fichiers au début de la ligne. Cela est possible avec l’option -h :

-h, –no-filename

Ne pas afficher le nom des fichiers dans les résultats lorsque plusieurs fichiers sont parcourus.

Source : man grep

Linux : Comment récupérer des lignes avant et après un mot-clé dans un fichier ?

 

Vous souhaitez rechercher des lignes bien précises dans un ou plusieurs fichiers. Mais vous voulez aussi récupérer des lignes avant ou après le mot-clé. Une commande suffit pour cela et vous la connaissez déjà, c’est la commande grep. Il suffit de lui ajouter quelques options et le tour est joué.

Les options en question sont :

- A pour rechercher « AFTER » après le mot-clé

- B pour rechercher « BEFORE » avant le mot-clé

Rien ne vaut un exemple.

Ci-dessous le contenu du fichier test :

Voyez par vous-même :

Pour avoir plus d’informations sur la commande grep, tapez man grep dans votre console Linux.

(Un grand merci à mon collègue)

Effectuer une recherche dans des fichiers compressés au format bzip2

 

Vous souhaitez effectuer une recherche rapide sur des fichiers compressés au format bzip2 sous Linux. Vous ne voulez pas forcément les décompresser. J’ai une solution pour vous, la commande bzcat peut vous aider.

bzcat monFichierCompresse.bz2 | grep -rni « maRecherche »

Cela vous fera gagner du temps à coup sûr.

Pour en savoir plus, comme d’habitude je vous conseille de taper : man bzcat

Linux : Vérifier qu’un script lancé en background tourne bien

 

Admettons que je lance un script en arrière-plan sous Linux :

nohup myScript &

Je souhaite savoir s’il tourne correctement, dans ce cas, je lance les commandes ci-dessous.

while :

do

     ps -aux | grep 12526 | awk ‘{ print $8 }’ | grep R

     sleep 1

done

Je vais les décomposer :

  • boucle while
  • récupération de la liste des process en cours
  • filtrage selon le PID du script, exemple 12526
  • affichage de la colonne numéro 8 contenant le « process state code » (R+)
  • on fait une pause d’une seconde : sleep 1
  • filtrage selon l’état « running » du process

Voilà ce que j’obtiens toutes les secondes si mon script tourne bien :

R+

R+

R+

Pour en savoir plus, il suffit de taper un man ps sur sa console Linux.

Calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux

 

Pour calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux, cela se fait via une ligne de commande.

  • Se positionner à la racine du répertoire en question
  • Lancez la commande ls -lR * | grep ^- | wc -l

Cette commande combine :
- la commande ls pour lister, l’option R sert à parcourir les répertoires
- la commande grep pour n’afficher que les lignes commençant par un -, à savoir les fichiers. En effet, les répertoires commencent par la lettre d quand on les liste avec un ls.
- la commande wc qui sert à compter les lignes quand elle est utilisée avec l’option l

ls -lR * | grep ^- | wc -l

  • Cas pratique

Dans /tmp, je crée un répertoire test :
cd /tmp
mkdir test

Puis, je crée 5 répertoires :
cd test
mkdir rep1 rep2 rep3 rep4 rep5

Je crée 3 fichiers dans le répertoire 1
cd rep1
touch fic1 fic2 fic3

Je crée 2 fichiers dans le répertoire 3 :
cd /tmp/test
cd rep3
touch fic4 fic5

Les autres répertoires sont vides.

Je lance ma commande pour compter le nombre de fichiers contenus dans /tmp/test :
cd /tmp/test
ls -lR * | grep ^- | wc -l

Le résultat est 5.

Aide-mémoire Unix