리눅스 쉘 스크립팅에서는 특별한 의미를 갖는 기호들이 있다.
이런 기호들은 정규표현식으로 패턴을 찾기 위해 사용한다.
대표적으로,
^ | 행의 시작 |
$ | 행의 끝 |
. | 하나의 문자 |
[] | [] 안에 있는 집합 중 하나와 대응 |
[^ ] | [] 안에 있는 집합에 속하지 않음 |
* | 문자 뒤에 써서, 그 문자와 같은 문자가 0개 혹은 그 이상 존재함 |
이외에도 많은 문자들이 있는데, 만약 .이 있는 문자열을 찾고 싶을 때
grep "." filename
이렇게 쓰면 파일 안에 있는 모든 문자를 grep한다.
따라서 이런 경우에
grep "\." filename
이런 식으로 escape해서 .이 특별한 의미를 지니지 않고, 문자 그대로 .을 나타낸다고 할 수 있다.
# 문제
① file1은 csv파일이다.
② 첫번째 필드가 아닌 필드에서 문자들 사이에 * 을 포함한 행을 찾는다.
grep ',.*\*.*,' file1
.* : 어떤 문자가 0개 또는 임의의 수와 대응
\* : 문자 그대로 *를 찾는다.
, : csv 파일은 ,로 이어져 있기 때문에 앞에 ,가 있으면 첫번째 필드가 아니다.
'Computer Science > [19-상] Linux Bash Script' 카테고리의 다른 글
[Linux_bash] regex,vi: 큰 수를 영어 숫자 단위(B,M,K)로 변경하기 (0) | 2020.02.29 |
---|---|
[Linux_bash] find,rm,cp: | (파이프라인) 이 작동하지 않을 때 (0) | 2020.02.29 |
[Linux_bash] regex: 정규표현식 그룹(captured group) 이용하기 (0) | 2020.02.29 |
[Linux_bash] pr,sed,grep: 문서 양식화하고 여백 지우기 (0) | 2020.02.29 |
[Linux_bash] redirection 이해하기 (0) | 2020.02.20 |
댓글