알려진 위치의 매우 큰 파일에서 여러 줄을 추출하는 방법은 무엇입니까? [폐쇄]

알려진 위치의 매우 큰 파일에서 여러 줄을 추출하는 방법은 무엇입니까? [폐쇄]

무게가 500Mb에 달하는 거대한 .xml 파일이 있는데, grep할 수 있는 알려진 위치에서 시작하여 일부 텍스트를 추출하고 싶습니다.

grep하면 키워드가 나타나는 위치가 표시되지만 줄 번호는 표시되지 않습니다. 첫 번째 grep에서 200개의 행을 추출해야 하면 어떻게 되나요?

답변1

grep -A200 searchword file.xml각 게임 후에 200개의 행을 나열하는 데 사용할 수 있습니다. searchword은(는) 검색 중인 단어이자 file.xmlXML 파일 이름이기도 합니다.

-B200각 게임 전 200줄, -C200전 200줄, 경기 후 200줄을 나열 할 수도 있습니다 .

grep이나 regexp를 사용하는 것보다 적절한 XML 파서를 선택하는 것이 거의 항상 더 나은 선택이라는 점에 유의하세요.

https://stackoverflow.com/a/1732454/131264

답변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를 눌러 검색할 수 있습니다.

관련 정보