링크 ux 문자열 이 있 는 줄, 출력 줄 번 호 를 찾 습 니 다.

5629 단어 linuxawk
이 글 은 다음 과 같은 질문 에 대답 할 수 있 습 니 다.
어떤 문자열 에 익숙 한 줄 을 찾 으 면 grep 나 awk 로 해결 할 수 있 습 니 다.두 사람의 가장 큰 차이 점 은 grep 의 결 과 는 일치 하 는 내용 을 출력 하 는 동시에 그 줄 번 호 를 출력 하 는 것 이다.awk 는 줄 번호 만 출력 할 수 있 고 일치 하 는 내용 은 출력 하지 않 습 니 다.필요 에 따라 선택 하 다.
[모호 일치] 출력 줄 번호
  • grep
  • #           
    grep -n "       "    
    
  • awk
  • #     ,      
    #       
    awk '/      /{print NR}'    
    

    여기 에는 작은 지식 점 이 있 는데, 어떻게 awk 에 변 수 를 쓰 는 지 에 관 한 것 입 니 다.예 를 들 어 '문자열 과 일치 해 야 합 니 다' 위 치 는 변 수 를 쓰 려 면 변수 에 작은 따옴표 를 추가 하고 작은 따옴표 를 추가 해 야 합 니 다.
    #     
    word=hello
    
    #  awk     ,         
    awk '/"'${word}'"/{print $0}' file.txt
    #   ${word}        ,$word         
    

    [정확하게 일치 (모든 일치)] 출력 줄 번호
  • grep
  • grep -wn "       "    
    

    그 중에서 grep - w 는 일치 할 문자열 입 니 다. 문자열 은 필드 의 일부분 만 일치 할 수 있 습 니 다.예컨대
    #    abcd, abcde, abc 
    grep "abc" 
    #    abc
    grep -w "abc" 
    
  • awk

  • awk 는 grep 처럼 단 어 를 걸 러 낼 수 없습니다.grep 는 단 어 를 걸 러 낼 수 있 고 awk 는 필드 만 걸 러 낼 수 있 습 니 다.
    #         ( csv)    /     ,    
    awk -F, '$3=="       " {print NR}'    
    
    #         ( csv)    /     
    #         {print} {print $0}    
    awk -F, '$3=="       " {print}'    
    

    단 어 를 굳이 걸 러 내 려 면 단어의 형식 에 따라 정규 표현 식 을 이용 하여 정확 하고 구체 적 으로 일치 할 수 있 습 니 다.위의 문법 awk "/ /{print NR}" 에서 / / 사선 안의 것 이 바로 정규 표현 식 의 부분 이다.예 를 들 어 파일 의 단 어 는 양쪽 공백 형식 입 니 다. 예 를 들 어 a aa aa 는 , a, aa 。
    ,“a”“aa”“aaa” , "" 으로 일치 합 니 다.구체 적 으로 검색 하 는 것 도 방법 이 라 고 할 수 있 습 니 다.만나면 grep - w 를 추천 합 니 다.
    #     
    #           ,           
    awk '/ aa /{print NR}'    
    
    #            ,           
    # (                )
    awk '/"aa"/{print NR}'    
    

    , "a c aa a a", a , a。 , , grep -w。

    grep, ,

    grep, 。
    , , , awk 。
    , , 。

    , test.txt word ,

    $ cat test.txt 
    word words,ok oks
    ok,ok,words word
    words,wordword
    picture pictures,word words
    
    #  grep     ,       ,  awk      
    $ grep -wn "word" test.txt > test_with_no.txt |awk -F: '{print $1}' test_with_no.txt 
    1
    2
    4
    

    #     grep   ,         
    $ grep -wn "word" test.txt
    1:word words,ok oks
    2:ok,ok,words word
    4:picture pictures,word words
    
    # awk              
    $ awk '/word/{print $0}' test.txt 
    word words,ok oks
    ok,ok,words word
    words,wordword
    picture pictures,word words
    
    # awk   ~           
    $ awk -F, '$2~"word" {print $0}' test.txt 
    words,wordword
    picture pictures,word words
    
    # awk ==      
    $ awk -F, '$2=="word" {print $0}' test.txt 
    #(   )
    

    ( )

    좋은 웹페이지 즐겨찾기