bib2bib 도구에 사용되는 특정 문자를 무시하는 정규식을 찾아야 합니다. 예를 들어, "muller"라는 단어가 나오는 것을 찾아야 합니다. "안녕하세요, 제 이름은 Michael M\"uller입니다. 잘 지내세요?" 또는 "There is M\"{u}ller"와 같은 문자열도 있습니다.
그것은 발견되어야 한다.
편집: "뮬러"뿐만 아니라 모든 단어에 대해 작동하려면 필요합니다.
답변1
\"
및 \"{
및 같은 항목을 제거하려면 비슷한 도구를 사용하여 입력 파일을 입력하기 전에 }
사전 처리해야 합니다 .sed
bib2bib
예:
sed -e 's/\\"\{\|\\"\|\}//' input.bib > input.bib.preprocessed
\"{u}
또는 구체적으로 다음 과 같이 변환하십시오 u
.
sed -e 's/\\"{\(.\)}/\1/' -e 's/\\"//' input.bib > input.bib.preprocessed
답변2
완전히 이식 가능한 솔루션은 다음과 같습니다.
n='
';printf %s\\n muller wright dummy >/tmp/patterns
tr '[:lower:][:upper:]' '[:upper:][:lower:]' </tmp/patterns |
paste '-d\n\n' - /tmp/patterns |
sed "N;s/./\\$n&/;:ul$n s/\(\n\)\(.\)\(.*\n\)\(.\)/\2\4\1\3/;tul"'
s/\n//g;s/../[{}\\"]*[&]/g'
최종 출력은 sed
다음과 같습니다.
[{}\"]*[mM][{}\"]*[uU][{}\"]*[lL][{}\"]*[lL][{}\"]*[eE][{}\"]*[rR]
[{}\"]*[wW][{}\"]*[rR][{}\"]*[iI][{}\"]*[gG][{}\"]*[hH][{}\"]*[tT]
[{}\"]*[Dd][{}\"]*[uU][{}\"]*[Mm][{}\"]*[mM][{}\"]*[Yy]
내용에 따라 다르겠지만무늬영숫자 문자만 가능합니다. 만약에무늬예를 들어, 이들 중 하나 []
라도 대괄호가 해당 대괄호 표현식 내에 올바르게 배치되었는지 확인하려면 추가 테스트가 필요합니다.
어쨌든 관련 예제를 기반으로 하면 다음과 같습니다.
[{}\"]*[mM][{}\"]*[uU][{}\"]*[lL][{}\"]*[lL][{}\"]*[eE][{}\"]*[rR]
...다음 중 하나가 포함된 줄과 일치하는 정규식입니다.muller
또는Muller
또는M"ulL\\\{"er
.
GNU를 사용하면 sed
대소문자 변환을 내부적으로 처리하므로 sed
다음과 같습니다.
sed -E 's/([[:upper:]]?)([[:lower:]]?)/\1\L\1\2\U\2/g' patterns
...인쇄...
mMuUlLlLeErR
wWrRiIgGhHtT
DduUMmmMYy
...완전히 구체화되었으며 이전 조합과 tr|paste|sed
동일한 동작을 얻습니다.(게다가, 이는 앞에서 언급한 대괄호 문제를 올바르게 처리합니다)그냥 GNU를 사용하세요 sed
:
sed -E '
s/([[:lower:]]?)([[:upper:]]?)/\1\U\1\2\L\2/g
s/[[:alpha:]]{2}|./[{}\\"]*[&]/g
' </tmp/patterns
답변3
데이터를 어떻게 얻었는지는 언급하지 않았습니다. 게시된 패턴이 포함된 행을 삭제하려면 다음을 사용할 수 있습니다 grep
.
grep -v -E '(muller|M\\"uller|M\\"{u}ller)'
( \
다른 이스케이프가 필요하다는 점에 유의하세요.) 역행을 주어진 패턴과 일치시키려면 를 생략하세요 -v
.
파일에 정규식을 정의하려면 다음과 같이 grep
's 옵션을 사용하십시오.-f
grep -v -E -f file-with-regexps
파일의 각 줄에 하나의 정규식이 필요합니다.