텍스트 파일에서 파일 경로를 grep하는 방법은 무엇입니까?

텍스트 파일에서 파일 경로를 grep하는 방법은 무엇입니까?

다음과 같은 경로 목록이 포함된 파일이 있습니다.

"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/
$

관련 정보