문자열 패턴 검색[닫기]

문자열 패턴 검색[닫기]

저는 리눅스를 처음 접했습니다. 시스템 관리자로 임명되고 싶습니다. 아마존에서 인터뷰했어요. 그들은 파일에서 "s"로 시작하고 "a"로 끝나는 문자열을 찾기 위해 cmd를 작성하라고 요청했습니다. grep을 사용해야 한다는 것은 알고 있지만 실제 상황은 모릅니다. 무엇보다도 그들은 grep이 어떻게 작동하는지 묻습니다. 누구든지 이 질문에 간단히 대답할 수 있습니까?

미리 감사드립니다

답변1

grep은 명명된 입력 파일(또는 파일 이름이 지정되지 않은 경우 또는 단일 하이픈 빼기 기호(-)가 파일 이름으로 제공되는 경우 표준 입력)에서 지정된 PATTERN과 일치하는 행을 검색합니다. 기본적으로 grep은 일치하는 줄을 인쇄합니다.

Grep 명령

Grep 및 해당 옵션

-v  =   non-matching lines
-c  =   count of matching  lines
-i  =   Ignore  case
-r  =   Read all  files  under  each  directory
-l  =   list the file which contain the searching keyword
 ^      =       Search the Starting word of a file
.$      =       Search the end word of a file
^$      =       Search the empty lines in a file

특정 키워드와 일치하는 파일의 모든 행을 찾습니다.

grep sysadmin /etc/passwd

숫자 표시

grep -nv nologin /etc/passwd

키워드를 피하고 다른 키워드로 검색하세요

grep -v sysadmin /etc/passwd

검색 중인 키워드와 일치하는 행 수 계산

grep -c sysadmin /etc/passwd

대소문자를 무시하여 텍스트 검색

grep -i sysadmin /etc/passwd

/home특정 패턴과 일치하는 텍스트를 찾기 위해 해당 하위 디렉터리의 모든 파일을 검색 하고 일치하는 줄을 인쇄합니다.

grep -ri sysadmin /home/

/home특정 패턴과 일치하는 텍스트에 대해 해당 하위 디렉터리의 모든 파일을 검색하고 해당 텍스트가 포함된 파일을 나열합니다.

grep -ril sysadmin /home/

여러 IP 중 언급된 특정 IP를 검색해 보세요. 리터럴 문자 -F와 일치하는지 확인하세요. 리터럴 문자가 없으면 모든 문자와 일치합니다...

grep -F "192.168.1.10" /var/log/syslog

다음으로 시작하는 줄 검색Feb

grep ^Feb /var/log/syslog

다음 문자로 끝나는 줄 검색queue

grep queue$ /var/log/mail.log

파일의 빈 줄 수 계산(공백이 포함된 줄은 계산되지 않음)

grep -c ^$ /var/log/mail.log

디렉터리 및 하위 디렉터리의 모든 파일에서 문자열 검색

grep -r "root" .

답변2

-PGNU grep 명령의 (Perl-regex) 옵션을 사용해 보십시오.

 grep -oP '\bs.*a\b' file

설명하다:

\b    # Matches the word boundary(ie, match between a word character and a non word character)
s     # Starting character would be a literal s.
.*    # Matches any character zero or more times.
a     # Matches a literal a.
\b    # Matches the word boundary(ie, match between a word character and a non word character)

관련 정보