무게가 500Mb에 달하는 거대한 .xml 파일이 있는데, grep할 수 있는 알려진 위치에서 시작하여 일부 텍스트를 추출하고 싶습니다.
grep하면 키워드가 나타나는 위치가 표시되지만 줄 번호는 표시되지 않습니다. 첫 번째 grep에서 200개의 행을 추출해야 하면 어떻게 되나요?
답변1
grep -A200 searchword file.xml
각 게임 후에 200개의 행을 나열하는 데 사용할 수 있습니다. searchword
은(는) 검색 중인 단어이자 file.xml
XML 파일 이름이기도 합니다.
-B200
각 게임 전 200줄, -C200
전 200줄, 경기 후 200줄을 나열 할 수도 있습니다 .
grep이나 regexp를 사용하는 것보다 적절한 XML 파서를 선택하는 것이 거의 항상 더 나은 선택이라는 점에 유의하세요.
답변2
를 사용하여 행 범위를 추출할 수 있습니다 awk
. 다음 명령은 FILENAME에서 2-6행(포함)을 추출하여 OUTPUT에 씁니다.
cat FILENAME | awk 'NR >= 2 && NR <= 6' > OUTPUT
다음과 같이 알려진 위치에서 파일 끝까지 추출하도록 할 수도 있습니다.
cat FILENAME | awk 'NR >= 2' > OUTPUT
NR
"넘버 레코드"를 의미합니다.
grep을 사용하여 행 번호를 동적으로 가져오고 이를 awk
명령에 전달하여 해당 행을 추출할 수도 있습니다.
LINE_START=`grep -nr "STRING" FILENAME | grep -o '^[0-9]\+'`
cat FILENAME | awk 'NR >= $LINE_START' > OUTPUT
답변3
실제로 Notepad++를 사용하여 쉽게 열고 Ctrl+F를 눌러 검색할 수 있습니다.