<Linux Shell Script Chapter 4> - 정규 표현식과 검색도구 2

심우열·2023년 2월 13일
0

Linux Shell Script

목록 보기
8/17

2. 명령어(Sed)

1. 명령어(seq)

seq 1 100 > nums
1에서 100까지 나열된 숫자를 nums 파일에 저장

2. 원하는 내용 편집

sed 's/George/Tom/' president.txt | grep -n Tom
president.txt 파일에서 George를 Tom 으로 변경,
Tom 이 포함된 항목 출력, **원본파일에는 영향 없음**
sed 's/George/Tom/' president.txt > president_modified.txt
president.txt 파일에서 George를 Tom 으로 변경,
변경된 내용을 president_modified.txt 파일에 저장

3. 한 항목에 변경하고자 하는 항목이 여러개 포함되어 있는 경우

sed 's/1981/2981/' president.txt | grep -n 2981
아래와 같이 한 항목에서 앞쪽의 내용만 변경

sed 's/1981/2981/g' president.txt | grep -n 2981
아래와 같이 한 항목에서 모든 내용 변경,
/g (global)는 검색 결과를 모두 치환

4. 정규 표현식의 사용

sed -E '/\(/s/\(.*//g' president.txt | more
-E 옵션은 확장된 정규표현식을 지원

5. 원하는 위치의 내용 제거

sed 's/.$//' msdos.txt
정규식 표현으로 .$는 마지막 글자를 의미,
마지막 글자를 //로 변경, 즉 삭제를 의미함

6. : 로 구분되어 있는 필드 중 패턴 매칭을 이용하여 원하는 부분만 가져오기

sed -E 's/([^:]*).*/\1/g' /etc/passwd
/etc/passwd 파일에서 :로 구분된 첫번째(\1) 항목만 가져옴

7. sed에서 HereString

sed -E "s/\b(.)/\u\1/g" <<< "hello world"
HersString을 통해 " hello world"라는 내용의 파일을
sed 명령어의 파일 입력으로 받아와,
공백문자나 탭문자같은 화이트 문자로(\b(.)) 
구분된 내용의 첫번째(\1)를 대문자(\u)로 변경
sed -E "s/\b(.)/\l\1/g" <<< "HELLO WORLD"
HersString을 통해 " hello world"라는 내용의 파일을
sed 명령어의 파일 입력으로 받아와,
공백문자나 탭문자같은 화이트 문자로(\b(.)) 
구분된 내용의 첫번째(\1)를 소문자(\l)로 변경    

3. 중괄호 확장

1. 중괄호 확장

touch noname{1,2,3,4,5}

아래와 같이 noname1, noname2, noname3, noname4, noname5 생성됨

mkdir dir{1..5}

아래와 같이 dir1, dir2, dir3, dir4, dir5 생성됨

2. 중괄호 확장(계층)

mkdir -p newProject/{lib,doc/{pdf,ppt,doc},src,include/sys,bin}

아래와 같은 계층구조를 갖는 파일을 중괄호 확장을 통해 생성됨

3. 명령어(eval)

eval 명령어를 사용하면 입력 라인이 두번 구문 분석 됨, 코드를 동적으로 평가하는데 사용

length=40
eval printf -v line '%.0s-' {1..$length}

위와 같이 중괄호 확장에서 변수를 사용하게 될 경우, eval 명령어 없이는 변수 확장이 일어나지 않아 명령문이 작동되지 못함.

4. 중괄호 확장을 이용한 매개변수 입력

cp president.txt{,.bak)

위와 같은 중괄호 확장을 이용하여 아래와 같은 작업 수행 가능

cp president.txt president.txt.bak

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글