각 줄의 처음 몇 글자를 egrep 하시겠습니까?

각 줄의 처음 몇 글자를 egrep 하시겠습니까?

텍스트 파일이 있다고 가정 해 보겠습니다.

txt.txt

hello supdijfdsfsddsgs
hghgh hsdjghjfhgjfhgjfhg
hghgh yyyyyereuryueyruey

5첫 번째 문자만 시퀀스가 ​​되도록 이 줄을 인쇄하고 싶습니다 hghgh.

그래서 인쇄해야합니다

    hghgh hsdjghjfhgjfhgjfhg
    hghgh yyyyyereuryueyruey

egrep은 어떻게 해야 하나요?

egrep -5 "hghgh" txt.txt

?

답변1

이렇게 하면 다음과 같이 됩니다:

grep '^hghgh' txt.txt

egrepis는 ( is grep -E와 마찬가지로 ) 확장 정규식을 사용할 필요가 없으므로 여기서는 필요하지 않습니다.fgrepgrep -F-E

^hghgh(기본) 줄 시작 부분의 리터럴 문자열과 일치하는 정규식입니다 . 패턴을 선의 시작 부분에 고정합니다 hghgh.^

어울리고 싶다면정밀한문자열은 예 를 들어 하위 문자열이 hghgh아닌 줄의 시작 부분에 있습니다. 그런 다음 표현식 끝에 또는 를 사용하여 단어 끝과 일치시킵니다 .hghghaaaaaahghgh\>\b[[:>:]]

grep '^hghgh\>' txt.txt

또는 awk첫 번째 필드를 사용하여 문자열 비교를 수행합니다.

awk '$1 == "hghgh"' txt.txt

답변2

이 고양이의 가죽을 벗기는 방법에는 여러 가지가 있습니다.

grep( grep -E및 작동 egrep하지만 grep여기서는 기본적으로 작동합니다):

grep '^hghgh' /path/to/input

그리고 sed:

sed -n '/^hghgh/p' /path/to/input
sed '/^hghgh/!d' /path/to/input

그리고 awk:

awk '/^hghgh/' /path/to/input

이는 다음의 약어입니다.

awk '/^hghgh/ { print $0 }' /path/to/input

또는

awk 'index($0, "hghgh") == 1' /path/to/input

또는

awk 'substr($0, 1, 5) == "hghgh"' /path/to/input

관련 정보