본문 바로가기

운영체제/Unix & Linux

예제로 알아보는 sed 명령어

반응형

sample 파일 내용

1
2
3
4
5
6
7
8
9
10
11
[fruit]
apple     1000
banana   2000

[animal]
dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

예) 1에서 3행 출력

> sed -n '1,3p' sample

1
2
3
[fruit]
apple     1000
banana   2000

예) 1~3행, 9~11 행 출력(다중 조건은 -e 옵션 사용)

>  sed -n -e '1,3p' -e '9,11p' sample

1
2
3
4
5
6
[fruit]
apple     1000
banana   2000
[car]
bmw     40000
Benz    5000

예) 공백라인제거

>  sed '/^$/d' sample

1
2
3
4
5
6
7
8
9
[fruit]
apple     1000
banana   2000

[animal]
dog       12000
cat         5000
[car]
bmw     40000
Benz    50000

예)fruit과 일치하는 행의 다음라인에 "strawberry 3000" 행을 추가

sed '/<일치하는문자열>/a\추가할문자열'

> sed '/fruit/a\ strawberry 3000' sample

1
2
3
4
5
6
7
8
9
10
11
12
[fruit]
strawberry 3000
apple     1000
banana   2000

[animal]
dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

예)fruit과 일치하는 행의 앞 라인에 "strawberry 3000" 행을 추가

> sed '/fruit/i\strawberry 3000' sample

1
2
3
4
5
6
7
8
9
10
11
12
strawberry 3000
[fruit]
apple     1000
banana   2000

[animal]
dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

예) fruit과 일치하는 행 전체 라인을 [temp] 치환

> sed '/fruit/c\[temp]\' sample

1
2
3
4
5
6
7
8
9
10
11
[temp]
apple     1000
banana   2000

[animal]
dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

예) [ 시작하는 라인만 출력( [ 는 특수 문자로 일반문자로 인식 시키기 위해 특수문자 앞에 \ ,백슬래쉬 를 넣어준다)

> sed -n '/^\[/p' sample

1
2
3
[fruit]
[animal]
[car]

예) apple 단어를 strawberry 로 치환후 출력

>  sed 's/apple/strawberry/g' sample

1
2
3
4
5
6
7
8
9
10
11
[fruit]
strawberry     1000
banana   2000

[animal]
dog       12000
cat         5000

[car]
bmw     40000
Benz    5000

예) apple을 strawberry로 치환후 치환된 라인만 출력

>  sed -n 's/apple/strawberry/p' sample

1 strawberry     1000

* -n, p 옵션은 같이 사용되며 연관된 라인만 출력

예) dog로 시작하는 행에 # 처리

> sed 's/^dog/#&/g' sample

1
2
3
4
5
6
7
8
9
10
11
[fruit]
apple     1000
banana   2000

[animal]
#dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

예) 2000 문자열을 포함 하는 행의 첫번째열에  # 추가(주석처리)

> sed  '/2000/s/^/#/' sample

1
2
3
4
5
6
7
8
9
10
11
[fruit]
apple     1000
#banana   2000

[animal]
#dog       12000
cat         5000

[car]
bmw     40000
Benz    50000

 

예) 실제 파일의 내용을 변경

-i : 옵션

> sed -i 's/banana/\#banana/' sample

> sed -i 's/^\#banana/banana/' sample

 

예) solaris 에서 sed -i 옵션(기본 적으로 solaris에서는 -i 옵션을 지원하지 않음)

> sed -i 

sed: illegal option -- i

-i 옵션과 동일한 효과를 보기 위해서는 아래와 같이 한다.

> sed 's/^banana/\#banana/' sample > sample.edited.txt && mv sample.edited.txt sample

반응형

'운영체제 > Unix & Linux' 카테고리의 다른 글

shell script - array  (0) 2023.08.19
Device /dev/sdb excluded by a filter.  (0) 2023.07.17
gnome-initial-setup disable  (0) 2023.06.05
nmcli 를 이용한 bonding 구성  (0) 2023.05.31
nftables를 사용하여 SNAT 구성  (0) 2023.05.30