제4 장: 삼 총사 의 grep, sed
정규 부호
속뜻
^
첫머리
$
엔 딩
.
임의의 문자
^$
공 행
*
앞의 문자 와 일치 하여 0 회 또는 0 회 이상 나타 납 니 다.
.*
소유 하 다.
\
특수 문자 의 의 미 를 취소 합 니 다.
{n}
앞 글자 n 회 일치
{n,}
앞의 문 자 는 적어도 n 번 일치 합 니 다.
{n,m}
앞의 문 자 는 최소 n 회, 최대 m 회, n 과 일치 합 니 다.
{,m}
앞의 문 자 는 최대 m 회 일치 합 니 다.
2 절: grep | egrep 여과
1. grep 관련 옵션
option:
-i
-v
-n
-c
-w
-o
-E
-r
-R
-A
-B
-C
-q , 。 0
2. 관련 매개 변수의 용법
1. root -i
[root@lb03 ~]# grep -i 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
2. root -C
[root@lb03 ~]# grep -ic 'root' passwd
4
3. root , -n
[root@lb03 ~]# grep -in 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
22:ROOT
4. /sbin/nologin ( ) -v
[root@lb03 ~]# grep -v '/sbin/nologin' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
ROOT
5. -w
[root@lb03 ~]# grep -iw 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT
6. root -o
[root@lb03 ~]# grep -o 'root' passwd
root
root
7. -r
[root@lb03 ~]# grep -r 'root' ./*
./anaconda-ks.cfg:rootpw --iscrypted $6$uxSmIs.46F1YbJYk$W0p9dIjeZPPe556u5YJGhQvOQyEdTk2Q9pHELzfEvDFfUXbKSiyUB9RDAPsfpzSj9BoBXMoyYP87m2qv5xW56/
./anaconda-ks.cfg:pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
./data/oldboy.txt:root
8. adm -A
[root@lb03 ~]# grep -n -A 2 'adm' passwd
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
9. adm -B
[root@lb03 ~]# grep -n -B 2 'adm' passwd
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
10. adm -C
[root@lb03 ~]# grep -n -C 2 'adm' passwd
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6-sync:x:5:0:sync:/sbin:/bin/sync
3. grep 정규 표현 식 결합 용법
1. passwd
[root@lb03 ~]# grep -o '[a-Z]' passwd |sort |uniq -c |sort -rn
80 n
77 o
62 s
55 i
42 t
38 b
2. passwd
[root@lb03 ~]# grep -Eo '[a-Z]+' passwd |sort |uniq -c |sort -rn
23 sbin
21 x
17 nologin
6 var
5 bin
4 root
3 sync
3 spool
3 shutdown
3. ip
[root@lb03 ~]# ip a s eth0 |grep -w inet | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |head -1
10.0.0.4
4.
[root@lb03 ~]# grep -Ew '[0-9]{17}[0-9X]' id.txt
371481199403259478
52020319810613433X
530124197504135438
360702197902169951
제3 절: sed 흐름 편집기
1. sed 작업 모드
2. sed 의 관련 옵션 즉 매개 변수
:
-n
-i
-r
-e
a
i
s
g
p
d
i
c
h
H
g
G
3. sed 용법
1.
[root@lb03 ~]# sed -n '1p' passwd
2.
[root@lb03 ~]# sed -n '1,3p' passwd
3.
[root@lb03 ~]# sed -n '1p;3p' passwd
[root@lb03 ~]# sed -n '$p' passwd
4.
[root@lb03 ~]# sed -n '/root/p' passwd
5. root
[root@lb03 ~]# sed -n '/^root/p' passwd
[root@lb03 ~]# sed -n '/^ROOT/p' passwd
6. t
[root@lb03 ~]# sed -n '/t$/p' passwd
7.
[root@lb03 ~]# sed -n '/adm/,/ftp/p' passwd
8.
[root@lb03 ~]# sed -n '/adm/p;/ftp/p' passwd
[root@lb03 ~]# sed -rn '/adm|ftp/p' passwd
9. 1
[root@lb03 ~]# sed '1d' passwd
10.
[root@lb03 ~]# sed '1,20d' passwd
11.
[root@lb03 ~]# sed '1,$d' passwd
12.
[root@lb03 ~]# sed '1d;3d' passwd
13.
[root@lb03 ~]# sed '1aoldboy' test.txt
14.
[root@lb03 ~]# sed '1ioldboy' test.txt
15.
[root@lb03 ~]# sed '1s/^/oldboy
/' test.txt
16.
[root@lb03 ~]# sed '$s/$/
oldgirl/' test.txt
4. sed 의 대체 용법
1.
[root@lb03 ~]# sed 's#root#admin#g' test.txt
2.
[root@lb03 ~]# sed '1,5s#bin#shell#g' test.txt
3.
[root@lb03 ~]# sed '1,5s#bin#shell#' test.txt
4.
[root@lb03 ~]# sed '/^root/s#root#admin#g' test.txt
5.
[root@lb03 ~]# sed 's#root#admin#gi' test.txt
-c ( )
6.
[root@lb03 ~]# sed '1cadmin' test.txt
7.
[root@lb03 ~]# sed '/root/cadmin' test.txt
[root@lb03 ~]# sed '7cSELINUX=enforcing' /etc/sysconfig/selinux
[root@lb03 ~]# sed '/^SELINUX=/cSELINUX=enforcing' /etc/sysconfig/selinux
[root@lb03 ~]# sed '/^#Port/cPort 666' /etc/ssh/sshd_config
[root@lb03 ~]# sed '17cPort 666' /etc/ssh/sshd_config
[root@web ~]# sed '/^user/cuser www;' /etc/nginx/nginx.conf
8.
[root@lb01 ~/scripts/02]# cat url.txt
www.baidu.com
www.taobao.com
www.mysun.com
[root@lb01 ~/scripts/02]# sed ':label;N;s/
/ /;b label' url.txt
www.baidu.com www.taobao.com www.mysun.com
w #
[root@lb03 ~]# sed -n '/root/w file.txt' passwd
[root@lb03 ~]# sed -n '1w file1.txt' passwd
e #
[root@lb03 ~]# sed '1,10d' passwd |sed 's#root#123#g'
[root@lb03 ~]# sed -e '1,10d' -e 's#root#123#g' passwd
n # , ( n )
[root@lb03 ~]# sed '/root/{n;d}' passwd
[root@lb03 ~]# sed '/root/{n; s/bin/123/}' passwd
! #
[root@lb03 ~]# sed -n '1!p' passwd
[root@lb03 ~]# sed '1!d' passwd
#
[root@lb03 ~]# sed = passwd
# ( .bak )
[root@lb03 ~]# sed -i.bak '1,$d' passwd
5. sed 의 고급 용법
:
h #
H #
g # , ,
G # , ,
:
1. ,
[root@lb03 ~]# sed '1h;$g' file.txt
2. ,
[root@lb03 ~]# sed '1h;$G' file.txt
3. ,
[root@lb03 ~]# sed '1{H;d};$G' file.txt
4. ,
[root@lb03 ~]# sed '1h;2,$g' file.txt
5. , 2-3 ,
[root@lb03 ~]# sed '1h;2,3H;$G' file.txt
6. sed 파일 에 주석 추가
1.
[root@lb03 ~]# sed 's#^#\##g' file.txt
2.
:
[root@lb03 ~]# cat file.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
# shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
:
[root@lb03 ~]# sed 's/^[ \t#]*/#/g' file.txt
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
3. passwd ( )
[root@lb03 ~]# sed -r 's#(.*)(:x.*:)(.*)#\3\2\1#g' passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.