adsense_in_article_test


[bash: awk] 탭(tab)이 포함된 문자열 검색하기 리눅스 bash script

grep으로 검색하려는 문자열에 탭(tab)이 포함되어 있는 경우, echo 명령과 조합해서 검색할 수 있다.

echo 명령에 -e 옵션을 사용해서 탭(\t)을 출력하게 한 후 이것을 역따옴표(`)를 이용해서 grep의 변수로 넘기는 것이다. (-e 옵션은 이전 게시물을 참조하자)

아래의 예시를 보자.
test_file.txt에서 "abc[탭]def"를 검색하는 경우이다.

cat test_file.txt | grep `echo -e "abc\tdef"`

-_-; 뭔가 심각하게 착각을 했다; 된다고 생각했는데 위의 방법은 안된다 -_-;;

얼마전에 탭을 검색할 일이 있어서 위의 방법을 사용했었는데, 그때는 탭이 맨 뒤에 있는 경우였다. 즉 "abc[탭]" 이런 경우였는데, 그래서 되는 걸로 착각을 했구나;; 오류 메시지는 없으나 "abc[탭]"을 검색한 것이 아니라 "abc"를 검색한 셈이었다(어쩐지 결과가 약간 이상하더라니;;)

grep에서 탭을 제대로 인식하지 못하고, 탭 뒤에 있는 문자열을 별도의 변수로 인식한다는 문제가 있다. 예글 들어 "abc[탭]def" 문자열을 검색하려고 위처럼 grep과 echo를 사용하면 grep에서 탭 뒤에 있는 def를 파일명이라고 해석하게 된다.

탭이 포함된 문자열을 검색하려면 grep이 아니라 awk를 이용해야겠다.

test_file.txt에서 "abc[탭]def"를 검색하려면

cat test_file.txt | awk "/abc\tdef/"

또는

awk "/abc\tdef/" test_file.txt

이렇게 써야 한다.




핑백

  • 반달가면 : [bash: grep] 정확히 일치하는 문자열 찾기 2013-09-10 00:14:14 #

    ... 한다. cat my_file.txt | grep -x "john " 탭이 포함된 경우라면 이런 식으로 반영하긴 어렵고 awk를 써야 한다. (탭이 포함된 문자열 검색은 이전 게시물을 참고하자.) 그렇다면 행 중간에 있는 특정 문자열을 정확하게 찾으려면 어떻게 할 것인가? 위의 my_file.txt에서 john_smith는 제외하고 john ... more

  • 반달가면 : [bash: grep] 탭(tab)이 포함된 문자열 검색 2016-03-07 23:47:10 #

    ... 검색하고자 하는 문자열에 탭이 포함되어 있을 경우, 일단 awk를 사용할 수 있다. 이전 게시물을 참고하자. 여기로 grep으로 검색하려면 탭을 변수에 할당한 후에 사용하면 될 것으로 보인다. 아래의 예시를 보자. tab=`echo -e "\t"` # file.txt에서 ab ... more

덧글

  • NABU 2013/04/28 14:04 # 답글

    cat test_file.txt | grep -P "t"
    cat test_file.txt | grep "<Ctrl+V><Tab>"
    2개를 주로 사용하고 있습니다.
  • 반달가면 2013/04/28 20:17 #

    아 네 그건 제가 모르고 있던 부분이네요. 근데 위에 제가 처음에 적었던 방법은 잘못된 방법이니 사용하시면 안됩니다 ㅜ_ㅜ(취소선으로 지웠습니다). awk 써야 되네요;
  • SY Kim 2013/05/09 18:59 # 답글

    grep에서 tab 검색 됩니다.

    단 t 가 아니라 정말 탭을 넣어야 합니다.
    일반적으로 bash 프롬프트에서는 CTRL-V CTRL-I (대문자 i)를 누르면 탭이 입력됩니다.

    i.e. CTRL-V는 특수 키를 입력하는 것이고 CTRL-I는 indentation기능을 하는 tab을 의미합니다.
  • 반달가면 2013/05/09 23:07 #

    그렇군요. shell에서 탭을 실제로 쓸 일이 거의 없다 보니 있는 줄도 몰랐네요;;
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

18207
3300
2298696

2019 대표이글루_IT

B-Side