sed 명령 50 예
13234 단어 Shell
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.