2013-11-29 4 views
0

나오지 통해 특수 문자를 전달하는 :
sed -n -e "/Next</a></p>/,/Next</a></p>/ p" file.txt
이 명령은 내 경우 모두 Next</a></p>을있는 두 일치하는 패턴 사이의 모든 텍스트를 추출 (해야한다). 그러나 스크립트를 실행하면 오류가 계속 발생합니다. 나는 시도했다 :
sed -n -e "/Next\<\/a\>\<\/p\>/,/Next<\/a\>\<\/p>/ p" file.txt 운이없는. 어떻게 내 스크립트에서이 명령을 전달하려는

나는이 명령에 대한 일반적인 패턴이 믿고 :
sed -n -e "/pattern1/,/pattern2/ p" file.txt
내가 그것을 비록 Next</a></p> 근무하고 나는 그것이 내가 싸는하고있는 특수 문자를 함께 할 수있는 뭔가가 추측하고있어 얻을 수 없습니다. sed 명령에 Next</a></p>을 전달할 방법이 있습니까? 미리 감사드립니다. 이 커뮤니티는 굉장합니다! 앞으로 당신은 정규 표현식으로 /를 사용할 필요가 없습니다 정규 표현식에

sed -n -e '/Next<\/a><\/p>/,/Next<\/a><\/p>/p' file.txt 
+0

게시 한 명령은 수정 된 경우에도 일치하는 두 패턴간에 텍스트를 추출하지 않습니다. 몇 가지 샘플 입력과 예상 출력을 통해 실제로 무엇을하려하는지 알려주십시오. 올바른 길을 안내해 드릴 수 있습니다. –

답변

2

에 대한 구분 기호의 역할을 슬래시 이후

+0

+1, 이보다 더 좋습니다 – iruvar

+0

정말 고마워요! 나는 너희들에게서 너무 많이 배운다! – CrudeCoder

0

당신은, 전방이 \와 정규 표현식 내부 슬래시 탈출해야합니다 구분 기호. 다른 문자를 사용하면 따옴표 문제가 약간 쉬워집니다. 구문은 c 당신이 정규식에서 사용하지 않는 ( \ 이외의) 모든 문자가 될 수 있습니다

\cregexc

입니다. 이 경우, : 반면에, 나는 때문에 큰 따옴표 안에 "'로 변경

sed -n -e '\:Next</a></p>:,\:Next</a></p>: p' file.txt 

주, \ 는 이스케이프 문자로 bash에 의해 해석됩니다는 좋은 선택이 될 수 있습니다 .

sed -n -e '/Next<\/a><\/p>/,/Next<\/a><\/p>/ p' file.txt 
: 일반 문자 결과적으로,이 같은 탈출 슬래시 버전을 쓸 수도로 작은 따옴표 안에 \ 는 처리

하지만 콜론이있는 버전은 (약간) 읽기 쉽다고 생각합니다.

관련 문제