sed/bash를 사용하여 간단한 wikitext 파서를 만들려고합니다. 내가Sed 서브 표현식이 예상대로 작동하지 않습니다.
echo "London has [[public transport]]" | sed s/\\[\\[[A-Za-z0-9\ ]*\\]\\]/link/
을 실행하면 그것은 나에게 London has link
을 제공하지만 난 그냥 나에게 때문이다 London has [[public transport]]
sed/bash를 사용하여 간단한 wikitext 파서를 만들려고합니다. 내가Sed 서브 표현식이 예상대로 작동하지 않습니다.
echo "London has [[public transport]]" | sed s/\\[\\[[A-Za-z0-9\ ]*\\]\\]/link/
을 실행하면 그것은 나에게 London has link
을 제공하지만 난 그냥 나에게 때문이다 London has [[public transport]]
을 제공하여
sed s/\\[\\[\([A-Za-z0-9\ ]*\)\\]\\]/\1/
을 괄호의 내용을 얻기 위해 표시된 표현식을 사용하려고하면 정규식이 일치하지 않습니다.
sed 표현식을 따옴표로 묶지 않으므로 쉘의 슬래시를 두 번 이스케이프 처리해야합니다. 따라서 \[
대신 \\[
이 있어야합니다.
sed
에서 기본 정규식 (기본 정규식)은 대괄호에서 \(
및 \)
으로 표시됩니다. 따옴표로 묶지 않고 쉘에이 내용을 입력 했으므로 백 슬래시를 이스케이프 처리해야합니다. 배쉬는 괄호를 해석하기 때문에, 당신은 그들도 탈출해야 :
echo "London has [[public transport]]" | sed s/\\[\\[\\\([A-Za-z0-9\ ]*\\\)\\]\\]/\\1/
당신은 쓰기의 편의를 위해 작은 따옴표에 나오지 식을 묶
echo "London has [[public transport]]" | sed 's/\[\[\([A-Za-z0-9\ ]*\)\]\]/\1/'
훨씬 쉽게 맞죠? 내 컴퓨터에
echo "London has [[public transport]]" | sed '[email protected][[][[]\([A-Za-z0-9\ ]*\)[]][]]@\[email protected]'
출력
London has public transport
작품.
이 정보가 도움이되기를 바랍니다.
내 무지를 용서해주세요. 따옴표로 시도해 보면 효과가있었습니다. 빠른 답변 감사합니다 – isf