# Awk avec tail -f

**URL:** <https://www.debian-fr.org/t/awk-avec-tail-f/30065>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065 "2016-02-21T00:24:49Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![superkikim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@superkikim](https://www.debian-fr.org/u/superkikim)\
**Post date:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/1 "2016-02-21T00:24:49Z")

</div>

Bonjour,

La commande suivante ne fonctionne pas

```auto

```

alors que la commande suivante fonctionne très bien pour chaque instance de “test”:

```auto

```

Qui peut m’éclairer ?

---

<div class="post-metadata">

**Author:** ![Ahmet](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@Ahmet](https://www.debian-fr.org/u/Ahmet)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/2 "2016-02-21T00:25:23Z")

</div>

C’est normal. Tu fais tail -f

` -f, --follow[={name|descriptor}]
              afficher les dernières données ajoutées au fur et à mesure que le fichier s'accroît ;
              -f, --follow, et --follow=descriptor sont équivalents
`

C’est du temps réel et donc ton pipe | ne fonctionnera pas.

Tu veux faire quoi exactement ?

Si tu veux savoir toutes les instances de “test” le mieux serait d’utiliser grep avec le tampon sur une ligne :

` --line-buffered
              Utiliser un tampon de ligne sur le flux de sortie. Ceci peut
              réduire les performances.
`

```auto

```

---

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/3 "2016-02-21T00:25:24Z")

</div>

C’est tout de même possible avec awk ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

```auto
$ cat entree
un"deux"trois"test"
un"deux"trois"encore un test
$ tail -f entree | awk -F'"' -W interactive '{print $4}'
test
encore un test
```

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/4 "2016-02-21T00:25:28Z")

</div>

J’ajouterais :

```auto

```

😃

---

<div class="post-metadata">

**Author:** ![Knucky](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/71e660/32.png) [@Knucky](https://www.debian-fr.org/u/Knucky)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/5 "2016-02-21T00:25:28Z")

</div>

Bien vu, mais y a un ‹&nbsp;}&nbsp;› en trop, et faut -W interactive sinon ça marche pas avec mawk (awk fourni en standard avec Debian), et enfin ‹&nbsp;\&nbsp;› à la place de '' ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit") :

```auto
$ readlink -f /usr/bin/awk                                         
/usr/bin/mawk
$ tail -f ../logs/$whatlog | awk -W interactive -F\\ '$4 == "test"{system("./listmodes")}'
/bin/sh: ./listmodes: not found #normal ^^
```

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/6 "2016-02-21T00:25:28Z")

</div>

[quote=“Knucky”]`
$ readlink -f /usr/bin/awk                                         
/usr/bin/mawk
$ tail -f ../logs/$whatlog | awk -W interactive -F\\ '$4 == "test"{system("./listmodes")}'
/bin/sh: ./listmodes: not found #normal ^^
`[/quote]  
Ca viens pas de awk ça viens de ton shell. J’ai pas testé d’où l’erreur.

Dans le code initiale la vrai erreur était qu’il vaut mieu initialisé FS qu’une seule fois :

```auto

```

---

<div class="post-metadata">

**Author:** ![superkikim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/d26b3c/32.png) [@superkikim](https://www.debian-fr.org/u/superkikim)\
**Post date:** [Février 21, 2016, 12:25 UTC](https://www.debian-fr.org/t/awk-avec-tail-f/30065/7 "2016-02-21T00:25:33Z")

</div>

Merci pour vos réponses. J’ai fini par mettre en place ceci:

```auto
tail -f ../logs/$whatlog | awk -W interactive 'BEGIN{FS="\""} {if ($4 == "test") {system("./listmodes")}}'
```

Ca marche impeccable 🙂
