Jag vill använda AWK för att få filnamn eller det sista mappnamnet om strängen bara är en katalog. 
Jag har:
 awk -F "/" "{print $NF}" 
för att skriva ut den sista kolumnen och:
 awk -F "/" "{print $(NF - 1)} 
för att skriva ut en kolumn före den sista.
 Hur kan jag göra awk känna igen om strängen bara innehåller en katalog och inget filnamn och i det här fallet skriva ut en kolumn före den sista. 
Mitt problem är att en katalog kan se ut:
./folder1/folder2/folder3/ 
 och i det här fallet skulle den sista kolumnen vara tom. Jag vill att awk ska känna igen detta och sedan skriva ut folder3 (så en kolumn före den sista). 
Svar
 Du kan antingen använda if eller operatorn ?: för detta. 
awk -F "/" "{print $NF == "" ? $(NF - 1) : $NF}" 
awk -F "/" "{if($NF == "") print $(NF - 1); else print $NF}" 
Kommentarer
Svar
Med GNU-verktyg se även:
xargs -rd "\n" basename -a -- 
 Vilket på en list.txt -ingång som: 
./folder1/folder2/folder3/ ./foo bar/// / 
ger:
folder3 foo bar / 
 zsh ”s :t modifierare (från csh) ger "" för "/" istället för "/" 
$ printf "<%s>\n" "${(@)${(f)$(<list.txt)}:t}" <folder3> <foo> <bar> <> 
Svar
försök
 
(jag kunde dock inte testa det).
Svar
I skalet:
$ basename ./folder1/folder2/folder3/ folder3 
 Tilldelning till en variabel med basename med en variabel som innehåller en söknamn: 
filename=$( basename "$pathname" ) 
 basename -verktyget är  en standard POSIX-verktyg . 
Kommentarer
-  thx, min fråga har fått lite mycket på användningen av 
AWK, att användabasenameär mycket enklare. 
test ? true : falseär ett smart val.