Je veux utiliser AWK pour obtenir le nom de fichier ou le nom du dernier dossier si la chaîne nest quun répertoire. 
Jai:
 awk -F "/" "{print $NF}" 
pour imprimer la dernière colonne et:
 awk -F "/" "{print $(NF - 1)} 
pour imprimer une colonne avant la dernière.
 Comment puis-je créer awk reconnaître si la chaîne ne contient quun répertoire et aucun nom de fichier et dans ce cas, imprimer une colonne avant la dernière. 
Mon problème est quun répertoire pourrait ressembler à:
./folder1/folder2/folder3/ 
 et dans ce cas la dernière colonne serait vide. Je veux que awk le reconnaisse, puis jimprime folder3 (donc une colonne avant la dernière). 
Réponse
 Vous pouvez soit utiliser if, soit lopérateur ?: pour cela. 
awk -F "/" "{print $NF == "" ? $(NF - 1) : $NF}" 
awk -F "/" "{if($NF == "") print $(NF - 1); else print $NF}" 
Commentaires
Réponse
Avec les utilitaires GNU, voir aussi:
xargs -rd "\n" basename -a -- 
 Qui sur une entrée list.txt comme: 
./folder1/folder2/folder3/ ./foo bar/// / 
donne:
folder3 foo bar / 
 zsh « s :t modificateur (de csh) donne "" pour "/" au lieu de "/" 
$ printf "<%s>\n" "${(@)${(f)$(<list.txt)}:t}" <folder3> <foo> <bar> <> 
Réponse
essayez
 
(Je nai pas pu le tester cependant).
Réponse
Dans le shell:
$ basename ./folder1/folder2/folder3/ folder3 
 Assignation à une variable, en utilisant basename avec une variable contenant un chemin: 
filename=$( basename "$pathname" ) 
 Lutilitaire basename est  un standard Utilitaire POSIX . 
Commentaires
-  thx, ma question a gagné un peu beaucoup sur lutilisation de 
AWK, utiliserbasenameest beaucoup plus simple. 
test ? true : falseest un choix intelligent.