#1 Le 31/05/2014, à 13:59
- omnimax
awk comment faire plus court
Bonjour,
je n'arrive pas à utiliser awk sans passer par un fichier texte. N'est il pas possible d'utiliser directement une variable ?
#!/bin/bash
echo "/home/syst/Ubuntu\ One/course" > /home/syst/es
fu=$(awk -F "/" '{print $3}' /home/syst/es)
echo "$fu"
exit 0
j'aimerai plutôt utilser qqch du genre mais ma syntaxe ne doit pas être bonne.
#!/bin/bash
fic="/home/syst/Ubuntu\ One/course"
fu=$(awk -F "/" '{print $3}' "$fic")
echo "$fu"
exit 0
merci pour vos réponses, et bon samedi.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 31/05/2014, à 14:21
- aduxas
Re : awk comment faire plus court
fu=$(awk -F "/" '{print $3}' "$fic")
essaye <<<$fic pour forcer l'expansion
Hors ligne
#3 Le 31/05/2014, à 15:25
- pingouinux
Re : awk comment faire plus court
Bonjour,
Tu peux utiliser une de ces deux méthodes (sachant que le premier champ est nul, et que tu récupères syst)
#!/bin/bash
fu=$(awk -F "/" '{print $3}' <<<"/home/syst/Ubuntu One/course")
echo "$fu"
fic="/home/syst/Ubuntu One/course"
fu=$(awk -F "/" '{print $3}' <<<"$fic")
echo "$fu"
Hors ligne
#4 Le 31/05/2014, à 17:24
- omnimax
Re : awk comment faire plus court
Super merci pour l'astuce. Pour le champs 3 je comprends maintenant pourquoi je récupère syst.
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#5 Le 01/06/2014, à 17:28
- tiramiseb
Re : awk comment faire plus court
Salut,
Je suis étonné que personne n'a donné la méthode la plus standard, avec un pipe...
fu=$(echo "/home/syst/Ubuntu\ One/course" | awk -F "/" '{print $3}')
Par ailleurs, pourquoi utiliser awk ? cut est suffisant :
fu=$(echo "/home/syst/Ubuntu\ One/course" | cut -d/ -f3)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 06/06/2014, à 13:55
- Totor
Re : awk comment faire plus court
sans awk, ni cut... full bash
IFS="/" read -a fu <<< "/home/syst/Ubuntu One/course"
echo "${fu[3]}"
-- Lucid Lynx --
Hors ligne