sed 명령 50 예

13234 단어 Shell
bash 프로 그래 밍 - sed 50 예
sed 는 GNU/Linux 에서 유용 한 텍스트 처리 도구 입 니 다.sed 의 전체 영어 이름 은 Stream Editor 입 니 다.sed 명령 을 사용 하면 많은 간단 하고 복잡 한 텍스트 처리 임 무 를 쉽게 완성 할 수 있다.sed 명령 이 있 는 정규 표현 식 을 사용 하여 텍스트 나 파일 의 특정한 문자열 을 검색, 교체, 삭제 할 수 있 습 니 다.그러나 이 명령 은 모든 종류의 수정 을 임시로 실행 하고 기본 값 으로 원본 파일 의 내용 을 변경 하지 않 습 니 다.필요 하 다 면, 사용 자 는 수 정 된 내용 을 다른 파일 에 저장 할 수 있다.sed 명령 의 기본 용법 은 본 튜 토리 얼 에서 50 개의 독특한 예 를 사용 하여 설명 하 였 다.
본 튜 토리 얼 을 시작 하기 전에 다음 명령 을 실행 하여 운영 체제 의 sed 설치 버 전 을 확인 해 야 합 니 다.
$ sed --version
sed (GNU sed) 4.4

sed 명령 기본 형식: sed [options]… [script] [file]1. 기본 문자열 찾기 바 꾸 기
Bash 를 Perl, 's' 로 바 꾸 면 search 와 replace 작업 을 표시 합 니 다.
jun@ubuntu:~$ echo "Bash Scripting Language" | sed 's/Bash/Perl/'
Perl Scripting Language

weekday. txt 파일 을 만 드 는 내용 은 다음 과 같 습 니 다.
jun@ubuntu:~$ cat weekday.txt
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
jun@ubuntu:~$ sed 's/Sunday/Sunday is holiday/' weekday.txt
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday is holiday

2. 지정 한 줄 에 일치 하 는 모든 문자열 을 바 꿉 니 다.
Python. txt 파일 을 만 드 는 내용 은 다음 과 같 습 니 다. 줄 번호, 's',' g '를 이용 하여 두 번 째 줄 의 모든 Python 을 perl 로 바 꿉 니 다.
jun@ubuntu:~$ cat Python.txt
Python is a very popular language.
Python is easy to use. Python is easy to learn.
Python is a cross-platform language
jun@ubuntu:~$ sed '2 s/Python/perl/g' Python.txt
Python is a very popular language.
perl is easy to use. perl is easy to learn.
Python is a cross-platform language

3. 줄 마다 두 번 째 문자열 을 바 꿉 니 다.
'g' 뒤에 줄 당 몇 번 째 일치 하 는 것 을 추가 한 후
jun@ubuntu:~$ sed 's/Python/perl/g2' Python.txt
Python is a very popular language.
Python is easy to use. perl is easy to learn.
Python is a cross-platform language

4. 정규 매 줄, 부분 보류, 부분 교체
lang. txt 파일 을 만 드 는 내용 은 다음 과 같 습 니 다. Programming 앞부분 을 유지 하고 뒤쪽 은 Scripting 으로 바 꿉 니 다.\1. 앞 에 있 는. * 보존 부분 과 일치 하 는 부분 을 말 합 니 다.
jun@ubuntu:~$ cat lang.txt
C Language
Shell Programming
Python Programming
Perl Programming
jun@ubuntu:~$ sed 's/\(.*\)Programming/\1Scripting/' lang.txt
C Language
Shell Scripting
Python Scripting
Perl Scripting

5. 첫 줄 의 첫 번 째 일치 하 는 문자열 을 바 꿉 니 다.
jun@ubuntu:~$ sed '1 s/Python/perl/' Python.txt
perl is a very popular language.
Python is easy to use. Python is easy to learn.
Python is a cross-platform language.

6. 마지막 줄 의 첫 번 째 일치 하 는 문자열 을 바 꿉 니 다.
jun@ubuntu:~$ sed '$ s/Python/Perl/' Python.txt
Python is a very popular language.
Python is easy to use. Python is easy to learn.
Perl is a cross-platform language.

7. 파일 경로 바 꾸 기
jun@ubuntu:~$ echo /home/ubuntu/code/perl/add.pl | sed 's#/#\\/#g'
\/home\/ubuntu\/code\/perl\/add.pl

8. 경 로 를 없 애고 파일 이름 가 져 오기
jun@ubuntu:~$ echo "/home/ubuntu/temp/myfile.txt" | sed 's/.*\///'
myfile.txt
jun@ubuntu:~$ echo "/home/ubuntu/temp/myfile.txt" | sed 's#.*/##'
myfile.txt

9. 키워드 가 있 는 줄 의 문자열 바 꾸 기
CSE 를 포함 하 는 줄 의 Count 를 95 로, Civil 을 포함 하 는 줄 의 Count 를 100 으로 교체 합 니 다.
jun@ubuntu:~$ cat dept.txt
CSE - Count
EEE - Count
Civil - Count
jun@ubuntu:~$ sed '/Civil/ s/Count/100/; /CSE/ s/Count/95/;' dept.txt
CSE - 95
EEE - Count
Civil - 100

10. 위 와 반대로 키워드 가 없 는 줄 의 문자열 을 바 꿉 니 다.
jun@ubuntu:~$ sed '/EEE/! s/Count/100/;' dept.txt
CSE - 100
EEE - Count
Civil - 100

11. 키워드 앞 뒤 에 내용 추가
jun@ubuntu:~$ cat lang.txt
C Language
Shell Programming
Python Programming
Perl Programming
jun@ubuntu:~$ sed 's/\(Programming\)/is \1 Language/' lang.txt
C Language
Shell is Programming Language
Python is Programming Language
Perl is Programming Language

12. 일치 하 는 줄 삭제
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/OS/d' os.txt
Windows
Linux
Android

13. 일치 하 는 줄 삭제 후 2 줄
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/Android/,+2d' os.txt
Windows
Linux

14. 줄 끝 마다 빈 칸 과 tab 등 을 삭제 합 니 다.
jun@ubuntu:~$ hexdump -c os.txt
0000000   W   i   n   d   o   w   s  \t      

L i n u x 0000010

A n d r o i d 0000020
O S
0000028 jun@ubuntu:~$ sed 's/[[:blank:]]*$//' os.txt >os2.txt jun@ubuntu:~$ hexdump -c os2.txt 0000000 W i n d o w s

L i n u x

0000010 A n d r o i d
O S
000001b jun@ubuntu:~$

15. 키워드 두 번 에 나타 나 는 모든 줄 삭제
16. 빈 줄 삭제
jun@ubuntu:~$ cat os.txt
Windows

Linux

Android
OS
jun@ubuntu:~$ sed '/^$/d' os.txt
Windows
Linux
Android
OS

17. 인쇄 할 수 없 는 문자 삭제
jun@ubuntu:~$ hexdump -c os.txt
0000000                      \t       W   i   n   d   o   w   s  
0000010 \t L i n u x
0000020 \t A n d r o i d
0000030 \t O S
0000035 jun@ubuntu:~$ sed 's/[^[:print:]]//g' os.txt >os2.txt jun@ubuntu:~$ hexdump -c os2.txt 0000000 W i n d o w s
0000010 L i n u x
0000020 A n d r o i d
O S 0000030
0000031

18. 일치 하 는 줄 의 끝 에 내용 추가
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/Windows/ s/$/ 10/' os.txt
Windows 10
Linux
Android
OS

19. 일치 하 는 줄 에 내용 삽입
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/Linux/ s/^/iOS
/' os.txt Windows iOS Linux Android OS

20. 일치 하 는 내용 뒤에 삽입
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed 's/droid/&
Ubuntu/' os.txt Windows Linux Android Ubuntu OS

21. 일치 하지 않 는 줄 에 내용 추가
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/Linux/! s/$/ Operating System/' os.txt
Windows Operating System
Linux
Android Operating System
OS Operating System

22. 일치 하지 않 는 줄 삭제
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/Linux/!d' os.txt
Linux

23. 여러 번 일치 합 니 다. 일치 하 는 문자열 뒤에 빈 칸 을 추가 합 니 다.
jun@ubuntu:~$ cat Python.txt
Python is a very popular language.
Python is easy to use. Python is easy to learn.
Python is a cross-platform language.
jun@ubuntu:~$ sed 's/to /& /g' Python.txt
Python is a very popular language.
Python is easy to  use. Python is easy to  learn.
Python is a cross-platform language.

24. 리스트 2 의 첫 번 째 열 을 리스트 1 의 세 번 째 열 로 바 꿉 니 다.
jun@ubuntu:~$ cat list1.txt
1001 => Jafar Ali
1023 => Nir Hossain
1067 => John Michel
jun@ubuntu:~$ cat list2.txt
1001    CSE     GPA-3.63
1002    CSE     GPA-3.24
1023    CSE     GPA-3.11
1067    CSE     GPA-3.84
jun@ubuntu:~$ sed `cat list1.txt | awk '{print "-e s/"$1"/"$3"/"}'` <<< "`cat list2.txt`"
Jafar    CSE     GPA-3.63
1002    CSE     GPA-3.24
Nir    CSE     GPA-3.11
John    CSE     GPA-3.84

25. 일치 하 는 문자열 을 바 꾸 고 줄 을 끊 습 니 다.
jun@ubuntu:~$ echo "Bash Perl Python Java PHP ASP" | sed 's/Python/Added Text
/' Bash Perl Added Text Java PHP ASP

26. '를' 로 바 꾸 기 ','
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed -z 's/
/,/g' os.txt Windows,Linux,Android,OS,jun@ubuntu:~$

27. 교체 ',' 위 '
jun@ubuntu:~$ echo "Kaniz Fatema,30th,batch" | sed "s/,/
/g" Kaniz Fatema 30th batch

28. 대소 문 자 를 무시 하고 일치 하 는 줄 삭제
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '/linux/Id' os.txt
Windows
Android
OS

29. 대소 문 자 를 무시 하고 새 문자열 로 바 꿉 니 다.
jun@ubuntu:~$ echo "I like bash programming " | sed 's/Bash/PHP/i'
I like PHP programming

30. 키워드 대문자 로 바 꾸 기
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed 's/\(Windows\)/\U\1/Ig' os.txt
WINDOWS
Linux
Android
OS

31. 키워드 소문 자로 바 꾸 기
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed 's/\(os\)/\L\1/Ig' os.txt
Windows
Linux
Android
os

32. 파일 의 모든 대문자 를 소문 자로 변환
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed  's/\(.*\)/\L\1/' os.txt
windows
linux
android
os

33. 숫자 를 검색 하고 숫자 앞 에 내용 을 추가 합 니 다.
jun@ubuntu:~$ cat items.txt
HDD       100
Monitor   80
Mouse     10
jun@ubuntu:~$ sed -E 's/([[:digit:]]+)/$\1/g' items.txt
HDD       $100
Monitor   $80
Mouse     $10

34. 그룹 숫자, 3 개의 숫자 에 '를 추가 합 니 다.'
jun@ubuntu:~$  echo "5098673" | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/  \1,\2/;ta'
5,098,673

35 、\t 를 4 칸 으로 바 꾸 기
jun@ubuntu:~$ echo -e "1\t2\t3" | sed 's/\t/    /g'
1    2    3
jun@ubuntu:~$ echo -e "1\t2\t3" | sed 's/\t/++++/g'
1++++2++++3

36. 4 개의 연속 빈 칸 을 tab 로 바 꿉 니 다.
jun@ubuntu:~$ echo -e "1    2" | sed 's/\s\{4\}/\t/g' | hexdump -c
0000000   1  \t   2  
0000004

37. 모든 행동 80 자 차단
jun@ubuntu:~$ cat in.txt
PHP is a server-side scripting language.
PHP is an open-source language and PHP is case-sensitive. PHP is platform-independent.
The following `sed` command will truncate each line of in.txt file into 80 characters.
jun@ubuntu:~$ sed 's/\(^.\{1,80\}\).*/\1/' in.txt
PHP is a server-side scripting language.
PHP is an open-source language and PHP is case-sensitive. PHP is platform-indepe
The following `sed` command will truncate each line of in.txt file into 80 chara

38. 키워드 검색 및 추가 내용
jun@ubuntu:~$ echo "hello, how are you?" | sed 's/\(hello\)/\1 John/'
hello John, how are you?

39. 줄 마다 두 번 째 로 나타 난 키워드 와 일치 하고 키워드 뒤에 내용 을 추가 합 니 다.
jun@ubuntu:~$ cat input.txt
PHP is a server-side scripting language.
PHP is an open-source language and PHP is case-sensitive.
PHP is platform-independent.PHP PHP
jun@ubuntu:~$ sed 's/\(PHP\)/\1 (New Text added)/2' input.txt
PHP is a server-side scripting language.
PHP is an open-source language and PHP (New Text added) is case-sensitive.
PHP is platform-independent.PHP (New Text added) PHP

40. sed 명령 을 파일 에 넣 고 실행
jun@ubuntu:~$ cat input.txt
PHP is a server-side scripting language.
PHP is an open-source language and PHP is case-sensitive.
PHP is platform-independent.PHP PHP
jun@ubuntu:~$ vim sedcmd
jun@ubuntu:~$ cat sedcmd
s/PHP/ASP/
s/independent/dependent/
jun@ubuntu:~$ sed -f sedcmd input.txt
ASP is a server-side scripting language.
ASP is an open-source language and PHP is case-sensitive.
ASP is platform-dependent.PHP PHP

41. 여러 줄 을 연속 으로 일치 시 키 고 다른 문자열 로 바 꿉 니 다.
42. 키워드 의 순 서 를 바꾼다.
jun@ubuntu:~$ echo "perl python" | sed -e 's/\([^ ]*\) *\([^ ]*\)/\2 \1/'
python perl

43. 여러 sed 명령 실행
jun@ubuntu:~$ echo "Ubuntu Centos Debian" | sed -e 's/Ubuntu/Kubuntu/; s/Centos/Fedora/'
Kubuntu Fedora Debian

44, sed 명령 조합
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$  cat os.txt | sed 's/Linux/Fedora/'| sed 's/windows/Windows 10/i'
Windows 10
Fedora
Android
OS

45. 줄 마다 빈 줄 을 삽입 합 니 다.
jun@ubuntu:~$ cat stdlist
#ID     #Name
[101]   -Ali
[102]   -Neha
jun@ubuntu:~$ sed G stdlist
#ID     #Name

[101]   -Ali

[102]   -Neha

jun@ubuntu:~$

46. 모든 영문 숫자 를 빈 칸 으로 바 꿉 니 다.
jun@ubuntu:~$ cat stdlist
#ID     #Name
[101]   -Ali
[102]   -Neha
jun@ubuntu:~$ sed 's/[A-Za-z0-9]/ /g' stdlist
#       #
[   ]   -
[   ]   -

47. '&' 인쇄 일치 문자열 사용 하기
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed -n 's/^L/Matched String is - &/p' os.txt
Matched String is - Linux

48. 줄 마다 키워드 순서 교환
jun@ubuntu:~$ cat course.txt
PHP            ASP
MySQL          Oracle
CodeIgniter    Laravel
jun@ubuntu:~$ sed  's/\([^ ]*\)\s*\([^ ]*\)/\2 \1/' course.txt
ASP PHP
Oracle MySQL
Laravel CodeIgniter

49. 단어 이니셜 대문자
jun@ubuntu:~$ echo "I like bash programming" | sed 's/\([a-z]\)\([a-zA-Z0-9]*\)/\u\1\2/g'
I Like Bash Programming

50. 파일 줄 번호 인쇄
jun@ubuntu:~$ cat os.txt
Windows
Linux
Android
OS
jun@ubuntu:~$ sed '=' os.txt
1
Windows
2
Linux
3
Android
4
OS

좋은 웹페이지 즐겨찾기