정규 표현식(Reqular expression)은 특정한 규칙을 가진
문자열의 집합을 표현하는데 사용하는 일종의 형식
특정 문자들은 특정한 논리적 관계를 나타내는 기호
이를 제외한 나머지는 일반적인 문자를 뜻함
메타문자 | 의미 | 메타문자 | 의미 |
---|---|---|---|
^ | 문자열의 시작 | \d | 숫자 |
$ | 문자열의 끝 | \D | 숫자가 아닌 것 |
. | 하나의 문자와 대응 | \w | 알파벳 대소문자, 숫자, 언더스코어(_) |
\s | 공백문자 | \W | \w에 해당하지 않는 글자 |
\S | 공백문자가 아닌 것 | \n | 개행문자 |
\ | 메타문자를 문자 그대로 사용 | \t | 탭(tab) 문자 |
|
문자를 이용하면 A|B
의 패턴으로 매칭 가능
예를들어 alicce|elice
라는 정규 표현식은
"alice"와 "elice"라는 문자열을 모두 포함한다.
즉, alice 또는 elice 둘 중 하나라는 뜻
[]
대괄호 속에 넣은 문자 중에서 하나에 매칭
[0-9]
0부터 9까지의 숫자 하나에 매칭
[A-Z]
A부터 Z까지의 알파벳 대문자 하나에 매칭
[]
내에서 ^
기호는 not의 의미를 가지게 된다.
수량자 | 의미 | 수량자 | 의미 |
---|---|---|---|
? | 0개 또는 1개 | {n} | n개 |
* | 0개 이상 | {n,m} | n개 이상, m개 이하 |
+ | 1개 이상 | {n,} | n개 이상 |
()
괄호는 그룹을 나타냄
그룹은 전체 패턴 내에서 하나로 묶여지는 패턴
한 번 생서오딘 그룹은 재사용 가능
만들어진 순서로 1번, 2번, 3번으로 참조 가능
예를 들어 (to)ma\1
은 'tomato'와 매칭됨
전화번호는 일정한 패턴을 가진 문자열
아래의 조건을 만족하는 전화번호를 찾는 정규 표현식은?
- 전화번호는 010으로 시작한다.
- 전화번호의 가운데 자리는 네 자리이다.
- 전화번호의 각 자리에 구분문자가 있을 수도 있고, 없을 수도 있다.
정답: ^010(\D?\d{4}){2}
^
시작 문자는 010
\D?
숫자가 아닌 문자가 0개 이상
\d{4}
숫자가 4개
(\D?\d{4}){2}
앞의 그룹이 2개 존재
grep 명령은 파일 내에서 지정한 패턴이나 문자열을 찾은 후에 그 패턴을 포함하고 있는 모든 행을 출력
grep [option] [pattern] [파일명]
grep elice hello.txt
hello.txt 파일에서 'elice'라는 문자열이 들어 있는 행을 모두 출력
grep -c elice hello.txt
hello.txt 파일에서 'elice'라는 문자열이 들어 있는 행의 수 출력
grep [0-9] hello.txt
hello.txt 파일에서 숫자가 존재하는 행을 모두 출력
grep "Elice\.the\.Rabbit" *
현재 디렉토리의 모든 파일에서 Elice.The.Rabbit을 찾아 출력
grep -v ^# somecode
somecode 파일에서 #으로 시작하지 않는 행을 모두 출력
grep '\<[a-z].*e\>' elice
elice 파일에서 소문자로 시작하고 공백을 포함한 여러 문자가 나오며, e로 끝나는 단어가 포함된 행으르 모두 출력
File Redirection은 표준 스트림의 흐름을 바꾸어
일반적인 표준 입력 및 출력 그리고 오류를 사용하지 않고
다른 경로인 파일로 재지정하는 것을 뜻합니다
일반적으로 표준 입력, 표준 출력, 표준 오류 출력으로 분류
스트림은 문자열로 콘솔에 출력되도록 설정되어 있음
stdin
키보드 입력
stdout
화면 출력
stderr
오류 내용 출력
ls > ls.txt
>
연산자는 표준 출력을 재지정
ls >> ls.txt
>>
연산자는 파일이 존재하지 않다면 파일을 생성,
존재한다면 파일내용을 지우지 않고 이어서 작성
표준 오류는 연산자를 사용하지 않으며
파일디스크립터 번호를 >
앞에 작성해서 사용
0
표준 입력
1
표준 출력
2
표준 에러
cat < hello.txt > elice.txt
Pipe는 둘 이상의 명령어를 묶어 출력의 결과를
다른 명령으로 전환할 수 있는 기능
명령어의 표준 출력을 또 다른 명령어의 표준 입력으로 연결
|
기호를 사용하여 명령어와 명령어를 연결
head a.txt | grep [0-9]
head a.txt | grep [0-9] > result.txt
File Redirection, Pipe를 조합하여 더욱 다양하고 효율적인 작업을 수행할 수 있다.
ls | grep user01 > output.txt
mount란 물리적인 저장 장치(보조기억장치)를 디렉토리(또는 폴더)에 연결시켜주는 것을 말함.
윈도우에서는 하드, USB 등의 보조기억장치를 연결하면 자동으로 폴더(디렉토리)에 연결됨.
이것을 PnP(Plug and play)라고 함.
리눅스의 경우 PnP 기능이 작동하지 않아 직접 연결해야 함.
즉, 보조기억장치를 설치했을시 mount 작업을 해야 사용 가능
mount [option] [device] [directiory]
remount [device] [directiory]
mount를 취소하는 명령어
df
현재 mount 된 디스크 정보 출력