저는 리눅스를 처음 접했습니다. 저는 시스템 관리자로 임명되고 싶습니다. 아마존 인터뷰에 참석했습니다. 파일에서 's'로 시작하고 'a'로 끝나는 문자열을 찾으려면 cmd를 작성해 달라고 요청했습니다. 나는 grep을 사용해야 한다는 것을 알고 있지만 실제 내용은 모릅니다. 여기에 추가로 그들은 grep이 어떻게 작동하는지 물었습니다. 누구든지 이에 대한 답변을 간략하게 설명할 수 있습니까?
미리 감사드립니다
답변1
grep은 명명된 입력 FILE(또는 파일 이름이 지정되지 않은 경우 표준 입력)에서 지정된 PATTERN과 일치하는 항목이 포함된 행을 검색합니다. 기본적으로 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
-P
(Perl-regex) 옵션 과 함께 이 GNU grep 명령을 사용해 보세요 .
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)