텍스트 파일이 있다고 가정 해 보겠습니다.
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
egrep
is는 ( is grep -E
와 마찬가지로 ) 확장 정규식을 사용할 필요가 없으므로 여기서는 필요하지 않습니다.fgrep
grep -F
-E
^hghgh
(기본) 줄 시작 부분의 리터럴 문자열과 일치하는 정규식입니다 . 패턴을 선의 시작 부분에 고정합니다 hghgh
.^
어울리고 싶다면정밀한문자열은 예 를 들어 하위 문자열이 hghgh
아닌 줄의 시작 부분에 있습니다. 그런 다음 표현식 끝에 또는 를 사용하여 단어 끝과 일치시킵니다 .hghghaaaaaa
hghgh
\>
\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