Jeg vil bruke AWK for å få filnavn eller det siste mappenavnet hvis strengen bare er en katalog. 
Jeg har:
 awk -F "/" "{print $NF}" 
for å skrive ut den siste kolonnen og:
 awk -F "/" "{print $(NF - 1)} 
for å skrive ut en kolonne før den siste.
 Hvordan kan jeg lage awk gjenkjenne hvis strengen bare inneholder en katalog og ikke noe filnavn og i dette tilfellet skrive ut en kolonne før den siste. 
Problemet mitt er at en katalog kan se ut som:
./folder1/folder2/folder3/ 
 og i dette tilfellet ville den siste kolonnen være tom. Jeg vil at awk skal gjenkjenne dette og deretter skrive ut folder3 (altså en kolonne før den siste). 
Svar
 Du kan enten bruke if eller operatøren ?: for dette. 
awk -F "/" "{print $NF == "" ? $(NF - 1) : $NF}" 
awk -F "/" "{if($NF == "") print $(NF - 1); else print $NF}" 
Kommentarer
Svar
Med GNU-verktøy, se også:
xargs -rd "\n" basename -a -- 
 Som på en list.txt -inngang som: 
./folder1/folder2/folder3/ ./foo bar/// / 
gir:
folder3 foo bar / 
 zsh «s :t modifikator (fra csh) gir "" for "/" i stedet for "/" 
$ printf "<%s>\n" "${(@)${(f)$(<list.txt)}:t}" <folder3> <foo> <bar> <> 
Svar
prøv
 
(jeg kunne ikke teste det skjønt).
Svar
I skallet:
$ basename ./folder1/folder2/folder3/ folder3 
 Tilordne til en variabel ved å bruke basename med en variabel som inneholder en stinavn: 
filename=$( basename "$pathname" ) 
 basename verktøyet er  POSIX-verktøy . 
Kommentarer
-  thx, spørsmålet mitt har fått litt mye på bruken av 
AWK, å brukebasenameer mye enklere. 
test ? true : falseer et smart valg.