AWK
문자열이 파일 이름이나 마지막 폴더 이름을 얻는 데 사용하고 싶은 디렉토리인 경우.
나는 가지고있다:
awk -F '/' '{print $NF}'
마지막 열을 인쇄하고 다음을 수행합니다.
awk -F '/' '{print $(NF - 1)}
마지막 열 앞에 한 열을 인쇄합니다.
awk
문자열에 디렉토리만 있고 파일 이름은 없는지 어떻게 식별할 수 있습니까 ? 이 경우 마지막 열 앞에 열을 인쇄합니다.
내 문제는 디렉토리가 다음과 같다는 것입니다.
./folder1/folder2/folder3/
이 경우 마지막 열은 비어 있습니다. 나는 awk
이것을 식별한 다음 인쇄하고 싶습니다 folder3
(따라서 마지막 열 앞에 열이 있습니다).
답변1
if
OR ?:
연산자를 사용하여 이를 수행 할 수 있습니다 .
awk -F '/' '{print $NF == "" ? $(NF - 1) : $NF}'
awk -F '/' '{if($NF == "") print $(NF - 1); else print $NF}'
답변2
노력하다
awk -F/ '{if (length($NF)) print $NF ; else print $(NF-1) ;}'
(그래도 테스트는 못했어요)
답변3
GNU 유틸리티에 대해서는 다음도 참조하세요.
xargs -rd '\n' basename -a --
list.txt
다음을 입력 :
./folder1/folder2/folder3/
./foo
bar///
/
다음을 제공합니다:
folder3
foo
bar
/
zsh
for :t
(from csh
) 수식자는 for 대신에 ""
다음을 제공합니다."/"
"/"
$ printf '<%s>\n' "${(@)${(f)$(<list.txt)}:t}"
<folder3>
<foo>
<bar>
<>
답변4
셸에서:
$ basename ./folder1/folder2/folder3/
folder3
basename
경로 이름을 보유하는 변수와 함께 사용하기 위해 변수에 할당합니다 .
filename=$( basename "$pathname" )
유틸리티 basename
는표준 POSIX 유틸리티.