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)로 변경
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