A AWK
fájlt akarom használni fájlnév vagy az utolsó mappanév, ha a karakterlánc csak könyvtár.
Megvan:
awk -F "/" "{print $NF}"
az utolsó oszlop kinyomtatásához, és:
awk -F "/" "{print $(NF - 1)}
egy oszlop nyomtatásához az utolsó előtt.
Hogyan készíthetek awk
ismerje fel, ha a karakterlánc csak könyvtárat tartalmaz, és nincs fájlnév, és ebben az esetben nyomtasson egy oszlopot az utolsó elé.
A problémám az, hogy egy könyvtár kinézhet:
./folder1/folder2/folder3/
és ebben az esetben az utolsó oszlop üres lenne. Azt akarom, hogy awk
felismerje ezt, majd kinyomtassa a folder3
-t (tehát egy oszlopot az utolsó előtt).
Válasz
Használhatja a if
vagy a ?:
operátort is ehhez.
awk -F "/" "{print $NF == "" ? $(NF - 1) : $NF}"
awk -F "/" "{if($NF == "") print $(NF - 1); else print $NF}"
Megjegyzések
Válasz
A GNU segédprogramokkal lásd még:
xargs -rd "\n" basename -a --
Amely egy list.txt
bemeneten található:
./folder1/folder2/folder3/ ./foo bar/// /
a következőket adja:
folder3 foo bar /
zsh
“s :t
módosító (csh
-től) ""
ad "/"
helyett "/"
$ printf "<%s>\n" "${(@)${(f)$(<list.txt)}:t}" <folder3> <foo> <bar> <>
Válasz
próbáld
(Mégsem tudtam tesztelni).
Válasz
A shellben:
$ basename ./folder1/folder2/folder3/ folder3
Hozzárendelés egy változóhoz, a basename
használatával egy változóval, amely egy elérési út:
filename=$( basename "$pathname" )
A basename
segédprogram szabvány POSIX segédprogram .
Megjegyzések
- thx, kérdésem egy kicsit sokat nyer a , az
basename
használata sokkal egyszerűbb.
test ? true : false
okos választás.