N번째와 M번째 패턴 발생 사이의 문자열을 추출하는 방법은 무엇입니까?

N번째와 M번째 패턴 발생 사이의 문자열을 추출하는 방법은 무엇입니까?

파일 경로(예: txt 파일)가 포함된 path.txt 파일이 있습니다.

/Folder/F1/F2/F3/F4/.../Fn/abc.txt

경로, 즉 처음부터 마지막 ​​항목까지의 문자열을 추출하고 싶습니다 /(경로의 폴더 수가 다를 수 있으므로).

난 갖길 원해:

/Folder/F1/F2/F3/F4/.../Fn

sed/awk/perl/vi 중 어느 것이 최선의 선택이고 어떻게 선택합니까?

답변1

언급한 도구 중 하나를 사용하려면 다음을 사용할 수 있습니다 sed.

echo "/Folder/F1/F2/F3/F4/.../Fn/abc.txt" | sed "s/\/[^/]*$//"
sed -i "s/\/[^/]*$//" path.txt

Bash를 사용하는 경우 Bash 매개변수 확장을 사용하여 이를 달성할 수 있습니다.

path=$(cat path.txt)
echo "${path%/*}"

말한 바와 같이구석에당신은 그것을 사용할 수 있습니다 dirname.

답변2

basenamedirname인수로 주어진 파일 이름의 마지막 부분과 마지막 부분을 제외한 모든 부분을 인쇄합니다 .

$ dirname "/Folder/F1/F2/F3/F4/.../Fn/abc.txt" 
/Folder/F1/F2/F3/F4/.../Fn

(또는 문서에서 dirname "$(< pathname.txt)" :)

관련 정보