파일 크기가 크고, 가변 길이(2바이트~8바이트)의 특정 위치 코드와 일치하는 라인만 추출해야 합니다.
나쁜 결과를 초래할 수 있으므로 일반 grep을 사용할 수 없습니다. loc cd mas를 검색할 때 grep mas
다음과 같이 입력하면 thomas라는 이름과 일치합니다.
고정된 길이의 파일이기 때문에 어디서 검색해야 하는지 알 수 있습니다. 특정 위치(제 경우에는 620-628)를 검색하여 일치하는 줄을 추출할 수 있는 명령이 있나요?
답변1
sed
이에 매우 적합함
sed -n '620,628 { /mas/p }'
sed
이제 관심 있는 마지막 줄을 읽은 후 종료할 수도 있습니다(따라서 더 빠르게 실행됩니다).
sed -n -e '620,628 { /mas/p }' -e '629q'
완전한 단어 일치를 위해 표현식을 묶어서 변경할 수 있습니다.\b
예를 들어
sed -n -e '620,628 { /\bmas\b/p }' -e '629q'
이제 일치 this contains mas and stuff
하지만아니요성냥 this is a masterful piece of work
.
답변2
나는 노력할 것이다
awk '/mas/ && NR >= 620 && NR <= 628' file
어디
NR
(레코드 수)는 줄 번호입니다./mas/
패턴 검색 중- 기본 동작은 라인을 인쇄하는 것입니다
답변3
나는 노력할 것이다
grep -P '^.{620}mas' file
스키마가 변경되는 경우 변수를 사용할 수 있습니다
PAT='mas\b'
grep -nP "^.{620}$PAT" file