이 명령의 기능을 이해하지 못합니다.
grep '<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>' -R articles/ --only-matching | sed 's@articles//@@' | sed 's@:<span id=.geodata. class=.geo.>@ @' | sed 's@; @ @' | sed 's@</span>@@' | sort -u -b -k1 > geocodes_from_html.txt
몇 가지 배경지식: 저는 위키 기사를 작성 중이고 그 기사들로 가득 찬 폴더("기사")를 가지고 있습니다. 처리 스크립트는 몇 년 전에 작성되었으며, 당시 장소에 대한 지리 정보는 일반적으로 다음과 같았습니다.
<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>
이제 다음과 같이 보입니다.
<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>
이 명령이 작동하려면 어떻게 변경해야 합니까?
답변1
제공된 명령은 디렉토리의 모든 파일에서 grep
이 문자열을 검색합니다 . 다음 명령은 여러 문자열을 대체합니다.<span [...]</span>
articles
sed
예를 들어 sed s@articles/@@
(슬래시 /만) 다음과 같이 읽을 수 있습니다. sed search@this_string@replace_with_this@
; 문자열은 articles/
무엇이든 대체됩니다. 한 스크립트에서 다음 스크립트로 전달하는 대신 모든 스크립트를 하나의 스크립트로 결합하여 동일한 결과를 얻을 수 있습니다 sed
.
좌표를 추출하기 위해 다른 명령을 사용하지 않으려면 다음을 사용할 수 있습니다.
grep '<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>' -R articles --only-matching | sed 's@articles/@@;s@:<abbr class="latitude">@ @;s@<abbr class="longitude">@ @;s@</abbr>@@g' | sort -u -b -k1 >geocodes_from_html.txt