grep 명령은 리눅스

먼저 grep 명령 소개 :

그렙 (글로벌 검색 정규 표현식 (RE) 및 라인, 포괄적 인 검색 정규 표현식을 인쇄하여 선을 인쇄)는 강력한 텍스트 검색 도구, 당신은 정규 표현식 검색 텍스트를 사용하고, 일치하는 라인을 인쇄 할 수있다 아웃. 그것은 리눅스가 가장 일반적으로 사용되는,와 sed, 집단적으로 알려진 AWK 리눅스 "텍스트 처리 도구 중 하나"이며 "삼총사."

옵션 :

  • -a 또는 --text  : 바이너리 데이터를 무시하지 마십시오.
  • -A <라인의 수> 또는 --after 문맥 = <표시 라인의 수>  : 행의 내용을 표시 한 후, 패턴 외부 로우 라인에 템플릿을 표시 한 이외에.
  • 오프셋 -b 나 --byte  : 선 스타일의 준수를 보여 줄의 첫 번째 문자의 수를 표시하기 전에.
  • -B <라인의 수> --before 또는 - 콘텍스트 = <표시 라인의 수>  : 또한 광고 패턴을 표시하는 외부 충족 이전 행의 내용을 표시한다.
  • -c 또는 --count  : 열 스타일의 수에 맞춰 계산.
  • -C <행수> --context = <라인의 수가 표시> 또는 또는 - <행수>  : 충족보다 광고 스타일 및 행 전의 표시 내용을 표시하는 것 외에도.
  • -d <조치> 또는 --directories = <조치>  : 당신이 디렉토리가 아닌 파일을 찾을 할 때 지정하면,이 매개 변수를 사용해야합니다 그렇지 않으면 grep 명령이 정보를 반환 조치를 중지합니다.
  • -e <스타일 템플릿> 또는 --regexp = <템플릿 패턴>  : 파일을 스타일의 내용으로 지정된 문자열을 찾을 수 있습니다.
  • 또는 -E-정규 표현식은 --extended  : 표현의 스타일이 긍정적 인 확장 사용하는 것입니다.
  • -f <규칙 파일> 또는 --file = <규칙 파일>  : 규칙 파일을 지정, 하나 개 이상의 규칙적인 패턴을 포함, 그래서 내용 파일 규칙 조건이 충족 찾기 위해 grep에있는 내용, 규칙적인 패턴의 각 라인의 형식.
  • -F의 정규 표현식 또는 --fixed  : 고정 된 문자열 목록으로 볼 스타일.
  • -G-정규 표현식 또는 --basic  : 일반 사용과 같은 표기의 스타일.
  • -h - 파일 이름 또는 --no  : 선 스타일과 이전에 입증 준수는, 행의 파일 이름이 속한 아닙니다.
  • -H 또는 - 파일 이름 --with는  : 선 스타일의 준수를 증명하기에 앞서 행의 파일 이름이 속한 나타냅니다.
  • 케이스 - I 또는 --ignore가  : 대소 문자 차이를 무시합니다.
  • -l -와 - 더 --file 일치 또는  : 파일 파일 이름의 내용을 지정된 스타일과 일치 나열합니다.
  • -L - 더없이 경기 또는 --files은  : 지정된 스타일을 준수하지 않는 파일의 파일 이름의 내용을 나열합니다.
  • 번호 -n 또는 --line  : 선 스타일의 준수를 증명 행 번호의 열 수를 표시하기 전에.
  • -O-일치 또는 --only  : PATTERN 만 매칭 부.
  • -q --quiet 또는 --silent 또는  : 정보를 표시하지 않습니다.
  • --recursive 또는 -r  :이 파라미터의 효과가 지정되고 "-d 같이 Recurse"동일한 파라미터이다.
  • -s-메시지 나 --no  : 오류 메시지.
  • -v 일치 또는 --revert  : 일치하는 텍스트를 표시 모든 행.
  • -V 또는 --version은  : 버전 정보를 보여준다.
  • -w - 정규 표현식 또는 --word는  : 단지 전체 단어 열을 일치 표시합니다.
  • --line-정규 표현식 -x  : 열 열 표시 만 준수.
  • -Y  :이 파라미터의 특정 효과와 동일한 파라미터 "-i"이다.

예 :

다음과 같이 편의를 위해, 우리는 읽기 테스트 파일 TEST.TXT을 준비

 우리가 안녕하세요 문자열을 포함하는 행을 검색하려면, 다음 명령을 사용할 수 있습니다 :

 위의 그림은 문자열이 포함 된 행 아웃 라인 "안녕하세요"문자열을 포함하는있는 test.txt 파일을 검색하고 인쇄 할 grep 명령을 사용하는 명령을 나타냅니다 안녕하세요.

 이 내용을 밖으로 대소 문자 구분 검색은 다음과 같이 -i는 매개 변수를 추가 할 수 있습니다 찾고있는 경우 기본적으로 그렙은 대소 문자를 구분합니다 :

 그것은 실험에 사용, 그래서 때문에, 파일 수백 수천 라인의 많은 같은 일상적인 작업에서 수십 라인에 이르기까지 내용, 그리고 우리는 우리가 원하는 있는지 확인하려면 일반적으로, 상대적으로 작은 작성 테스트 파일의 내용 어떻게 내용이 파일에 몇 줄을 할 필요가 검색 할?

아래와 같이 -N 플러스 파라미터는, 상기 문제를 해결할 수있다 :

-n 매개 변수에 의해 도시 된 바와 같이 콘텐츠를 검색하는 라인의 수를 표시 할 수있다.

우리 크롤링 무엇을 포함하고 행을 포함하는 신경 쓰지 않는 행 수를 알고 싶은 경우에, 우리는 자격의 행 수를 얻기 위해 다음 명령을 사용할 수 있습니다.

 

 때때로, 우리는 옵션이 문제를 해결할 수있는이 시간 "의 문자열을 포함하지 않는" "-v"찾는으로 역방향 조회 필요

 의 "테스트"를 포함하지 않는 문 위의 텍스트 줄을 알아보십시오.

某些场景下,我们需要同时从多个目标中匹配,什么意思呢?来,我们看下示例就知道了

 上例子我们同时检索了包 hello 和 abc字符串,包含这两个字符串中的每一行都被打印出来,没错,就像上面的图例一样,使用“-e”选项可以同时匹配多个目标,多个目标存在“或”关系,即匹配到其中的任意一个都算作匹配成功。

在写脚本时,你可能只是想要利用grep判断文本中是否存在某个字符串,你只关心有没有匹配到,而不关心匹配到的内容,你只关心有,或者没有,这时,我们可以使用grep的静默模式,示例如下。

  当使用"-q"选项时,表示grep使用静默模式,静默模式下grep不会输入任何信息,无论是否匹配到指定的字符串,都不会输出任何信息,所以,我们需要配合"echo $?"命令,查看命令的执行状态,如果返回值为0,证明上一条grep命令匹配到了指定的字符串,如果返回值为1,则证明上一条grep命令没有匹配到指定的字符串,就像上图示例中显示的那样,静默模式下,grep没有输出任何信息,当我们在test.txt文本中查找"test"字符串时,可以匹配到结果,当在文本中查找"1111111111"字符串的时候,没有匹配到结果,所以,我们只关心有没有匹配到指定字符时,可以使用"-q"选项,但是需要配合"echo $?"命令查看执行状态。

grep还有很多其它选项,我只是列举了常用的一些选项,其它选项可以自行练习。

其实,除了grep命令,其实还有egrep命令,还有fgrep命令(fast grep),它们有各自的特点。

grep:支持基本正则表达式

egrep:支持扩展正则表达式,相当于grep -E

fgrep:不支持正则表达式,只能匹配写死的字符串,但是速度奇快,效率高,fastgrep

【参考资料:http://www.zsythink.net/archives/1733

 

추천

출처www.cnblogs.com/sxFu/p/11777467.html