# [OFF] Awk et les arguments. (résolu)

## RaX

Bonjour à tous.

Juste une petite question avec awk. J'ai besoin de lui faire passer des variables mais sans utiliser de pipe. Exemple:

```

I=1

echo $I | awk '{printf "%02d\n", $1}'

```

Avez vous une idée ?

Merci.Last edited by RaX on Tue Dec 15, 2009 8:31 pm; edited 1 time in total

----------

## xaviermiller

```
man awk
```

 ?

----------

## RaX

Je ni ai pas trouvé mon bonheur.

----------

## truc

Tu n'as pas expliqué précisément ce que tu veux faire?

Quels sont les arguments à faire passer? comment pourquoi? Et après on verra!

----------

## RaX

Salut truc.

C'est une question général sur awk, pour la pauser différemment comment pourrait-on faire pour faire ceci:

$ Y=2

$ echo $Y | awk '{printf "%04d\n", $1} '

Sans utiliser de pipe et en utilisant awk.

----------

## Temet

Pas sûr que tu puisses puisque awk sert à manipuler des fichiers!

Si tu ne veux pas piper, t'es obligé de créer un fichier et d'utiliser awk dessus ensuite (enfin je pense).

----------

## Bapt

tout simple tu as même plusieurs choix :

```
awk -v y=$Y 'BEGIN{printf "%04d\n", y}'
```

```
awk 'BEGIN{printf "%04d\n", '$Y'}'
```

par exemple

----------

## RaX

Tout comme Temet je pensais que c'était impossible, j'ai quand même tenter la question et miracle Bapt a poster les quelques lignes qu'il me fallait.

Merci à tous, merci Bapt.Last edited by RaX on Thu Dec 03, 2009 6:17 pm; edited 1 time in total

----------

## kwenspc

man awk sinon  :Wink: 

----------

## RaX

 *kwenspc wrote:*   

> man awk sinon 

 

Merci du conseil mais si je pose la question c'est que je ne suis pas arrivé a me débrouiller avec le manuel.

----------

## truc

 *Bapt wrote:*   

> tout simple tu as même plusieurs choix :
> 
> ```
> awk -v y=$Y 'BEGIN{printf "%04d\n", y}'
> ```
> ...

 

C'est à ça que je pensais, mais le monsieur n'était pas clair! Bref, dans le deuxième exemple, tu peux t'éviter des problèmes en quotant comme il se doit si ton argument est une chaine de caractère

```
awk 'BEGIN { printf "%4s\n", "'"$Y"'" }'
```

dans l'ordre nous avons printf "%4s\n", " ' "$Y" ' " }' (les espaces sont juste là pour que tu vois)

----------

