grep은 주변 문자와 일치합니다.

grep은 주변 문자와 일치합니다.

대규모 데이터베이스 덤프에서 찾기 및 바꾸기 작업을 수행하고 싶지만 발생해야 한다고 생각하는 작업이 수행되지 않습니다. 내 대상 문자열에 대한 파일을 grep한 다음 주변 8자 정도를 살펴보고 싶습니다(따라서 해당 숫자를 조정해야 할 수도 있음). 어떻게 해야 하나요?

내가 이것에 집중할 수 없는 이유는 수천 개가 아니더라도 수백 개의 게임이 있기 때문이다. 문자열 주위에 일부 문자를 가져와 uniq다른 곳으로 파이프하여 찾기 및 바꾸기가 예기치 않게 작동하는 이유를 이해하고 싶습니다.

또한, 같은 라인에 여러 개의 일치 항목이 있을 수 있습니다!

답변1

대략적인 사용방법 grep은 이렇습니다

grep -o "....yourtext...." /path/to/the/dump.sql

포인트는 grep 텍스트 앞/뒤의 문자 수에 해당합니다. 이 -o옵션을 사용하면 grep전체 줄이 아닌 일치하는 항목만 출력됩니다.

uniq출력에 사용 하려면 먼저 출력을 정렬해야 한다는 점을 기억하세요. 그래서 일반적으로 당신은

grep . . . | sort | uniq

게임당 안타 수에 관심이 있다면 다음을 사용하여 좋은 결과를 얻을 수 있습니다.

grep . . . | sort | uniq -c | sort -n

답변2

@rozcietrzewiacz의 답변부터 시작하여 다음으로 확장할 수 있습니다.

pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file

관련 정보