다음과 같은 경로 목록이 포함된 파일이 있습니다.
"1" "/user/bin/share"
"2" "/home/user/.local"
"3" "/root/"
추출할 수 있는 방법이 있나요?오직길? 숫자나 따옴표가 필요하지 않습니다. 파일의 경로를 sed 또는 grep하는 방법은 무엇입니까? 그러한 작업에는 어떤 정규 표현식이 필요합니까?
답변1
모든 경로가 다음으로 시작 하면 /
일치시킬 수 있습니다 ./
"
$ grep -o '/[^"]*' file
/user/bin/share
/home/user/.local
/root/
또는 보다 구조화된 접근 방식을 위해 다음 awk
을 사용하여 두 번째 필드에서 따옴표를 제거하고 두 번째 필드만 인쇄합니다.
awk '{gsub(/"/,"",$2); print $2}' file
답변2
경로에 개행 문자가 포함되어 있지 않다고 가정하면,
$ sed 's/^.*[[:blank:]]"//; s/"$//' <file
/user/bin/share
/home/user/.local
/root/
코드 는 공백(공백 또는 탭) 앞에 오는 첫 번째 문자를 sed
포함하여 각 줄의 모든 항목을 제거하는 것으로 시작됩니다 . 그런 다음 마지막에 있는 항목을 "
삭제합니다 ."
이렇게 하면 경로에 공백과 포함된 문자가 포함될 수 있지만 "
공백+ 조합은 허용되지 않습니다 "
.
답변3
왜 간단하지 않은가?
awk -F\" '{print $4}' file
/user/bin/share
/home/user/.local
/root/
일하다?
답변4
간단한 방법. 를 사용하여 필드 #4를 제거하고 따옴표를 구분 기호로 사용합니다 cut
.
$ cut -f4 -d\" file
/user/bin/share
/home/user/.local
/root/
$