Linux 셸 4 총사 의 grep

14541 단어 공부 하 다.
사 총사 의 grep
grep
텍스트 필터 (모드: pattern) 도구, grep, egrep, fgrep 텍스트 검색 도 구 는 사용자 가 지정 한 모드 에 따라 대상 텍스트 를 한 줄 씩 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다.
1. 패턴 은 정규 표현 식 문자 와 텍스트 글자 로 작 성 된 필터 조건 grep [OPTIONS] PATTERN [FILE]
2. 옵션 -- color = auto: 일치 하 는 나의 착색 표시;- v: pattern 과 일치 하지 않 는 줄 을 표시 합 니 다.- i: 문자 대소 문자 무시 하기;- o: 일치 하 는 문자열 만 표시 합 니 다.- q: 침묵 모드 로 정 보 를 출력 하지 않 습 니 다.- A\#: after, 일치 하 는 후\# 줄 은 일치 하 는 줄 을 표시 하고 이 줄 전에 num 줄 - B\#: before, 앞\# 줄 을 표시 하 며 이 줄 뒤에 num 줄 - C\# context 를 표시 하고 앞 뒤 각\# 줄 을 표시 하 며 이 줄 의 앞 뒤 각 num 줄 - E: ERE 를 사용 합 니 다.정규 표현 식 을 확장 합 니 다. egrep = grep - E - F: fgrep 에 해당 합 니 다.
3. 정규 표현 식 은 정규 표현 식 메타 문 자 를 기반 으로 합 니 다. 1) 문자 일치:.: 임의의 단일 문자 와 일치 합 니 다.[]: 지정 한 범위 내의 임의의 단일 문자 와 일치 합 니 다 [^]: 지정 한 범위 밖의 임의의 단일 문자 전용 문자 집합 [: digit:]: 임의의 숫자, 0 - 9 [: lower:] 에 해당 합 니 다.: 모든 소문 자 [: upper:]: 대문자 [: alpha:]: 대소 문자 [: alnum:]: 숫자 와 문자 [: punct:]: 문장 부호 [: space:]: 빈 칸 [: graph:]인쇄 가능 한 비 공백 문자 grep 's... n'/etc/passwd grep '... t'/etc/passwd grep '[[: alpha:] [[: alpha:]] [[: alpha:]]] t'/etc/passwd 이렇게 쓰 면 너무 힘 들 어 요.일치 하 는 횟수 로 정규 표현 식 을 확장 할 수 있 습 니 다. 정규 표현 식 에 따라 확장 정규 표현 식 은 일부 매개 변수 에 서 는 전의 자 (\) 를 사용 하지 않 아 도 됩 니 다. 사용 방식 에 있어 서 는 1), 문자 가 일치 하지 않 습 니 다. [] [^]2) 、 횟수 일치 *?:0 또는 1 회 + 1 회 또는 여러 번 {m}: m 회 {m, n}: 최소 m ~ n 회 3), 닻 ^ $>,\b 그룹 () 후 참조:\1,\2... 또는 a | b 4, 인 스 턴 스 1, 디 스 플레이/proc/meminfo 파일 에서 크기 s 로 시작 합 니 다.
 1 [root@web2 keepalived]# grep -i "^[Ss]" /proc/meminfo   
 2 SwapCached:            0 kB
 3 SwapTotal:       3933180 kB
 4 SwapFree:        3933180 kB
 5 Shmem:             92032 kB
 6 Slab:             131744 kB
 7 SReclaimable:      86092 kB
 8 SUnreclaim:        45652 kB
 9 [root@web2 keepalived]# grep -i "^s" /proc/meminfo    
10 SwapCached:            0 kB
11 SwapTotal:       3933180 kB
12 SwapFree:        3933180 kB
13 Shmem:             92032 kB
14 Slab:             131752 kB
15 SReclaimable:      86092 kB
16 SUnreclaim:        45660 kB
17 [root@web2 keepalived]# grep  "^[Ss]" /proc/meminfo  
18 SwapCached:            0 kB
19 SwapTotal:       3933180 kB
20 SwapFree:        3933180 kB
21 Shmem:             92032 kB
22 Slab:             131752 kB
23 SReclaimable:      86092 kB
24 SUnreclaim:        45660 kB
25 [root@web2 keepalived]# grep  "^s\|^S" /proc/meminfo    
26 SwapCached:            0 kB
27 SwapTotal:       3933180 kB
28 SwapFree:        3933180 kB
29 Shmem:             92032 kB
30 Slab:             131752 kB
31 SReclaimable:      86092 kB
32 SUnreclaim:        45660 kB
33 [root@web2 keepalived]# 

인 스 턴 스 2, 디 스 플레이/etc/passwd 파일 에서/bin/bash 로 끝 나 는 줄 이 아 닙 니 다.
1 [root@web2 keepalived]# grep -v "/bin/bash"$ /etc/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
 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 8 halt:x:7:0:halt:/sbin:/sbin/halt
 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
15 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16 dbus:x:81:81:System message bus:/:/sbin/nologin
17 polkitd:x:998:997:User for polkitd:/:/sbin/nologin
18 abrt:x:173:173::/etc/abrt:/sbin/nologin
19 unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
20 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
21 libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
22 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
23 colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
24 usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
25 saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
26 geoclue:x:993:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
27 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
28 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
29 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
30 radvd:x:75:75:radvd user:/:/sbin/nologin
31 qemu:x:107:107:qemu user:/:/sbin/nologin
32 ntp:x:38:38::/etc/ntp:/sbin/nologin
33 chrony:x:992:989::/var/lib/chrony:/sbin/nologin
34 setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
35 sssd:x:990:987:User for sssd:/:/sbin/nologin
36 pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
37 gdm:x:42:42::/var/lib/gdm:/sbin/nologin
38 gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
39 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
40 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
41 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
42 tcpdump:x:72:72::/:/sbin/nologin
43 nginx:x:988:983:Nginx web server:/var/lib/nginx:/sbin/nologin
44 mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
45 [root@web2 keepalived]# 

인 스 턴 스 3. 디 스 플레이/etc/passwd 파일 에서 ID 번호 가 가장 큰 사용자 이름 입 니 다.
1 [root@web1 keepalived]# sort -t: -k3 -n /etc/passwd |tail -1 |cut -d: -f1
2 nfsnobody
3 [root@web1 keepalived]# 

인 스 턴 스 4. 사용자 루트 가 존재 하면 기본 셸 프로그램 을 표시 합 니 다.
 1 [root@web1 keepalived]# id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
2 /bin/bash
3 [root@web1 keepalived]# 

인 스 턴 스 5./etc/passwd 의 두 자리 또는 세 자리 수 를 찾 습 니 다.
1 [root@web1 keepalived]# grep "\" /etc/passwd
 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 3 operator:x:11:0:operator:/root:/sbin/nologin
 4 games:x:12:100:games:/usr/games:/sbin/nologin
 5 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 6 nobody:x:99:99:Nobody:/:/sbin/nologin
 7 systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
 8 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
 9 dbus:x:81:81:System message bus:/:/sbin/nologin
10 polkitd:x:998:997:User for polkitd:/:/sbin/nologin
11 abrt:x:173:173::/etc/abrt:/sbin/nologin
12 unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
13 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
14 libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
15 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
16 colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
17 usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
18 saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
19 geoclue:x:993:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
20 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
21 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
22 radvd:x:75:75:radvd user:/:/sbin/nologin
23 qemu:x:107:107:qemu user:/:/sbin/nologin
24 ntp:x:38:38::/etc/ntp:/sbin/nologin
25 chrony:x:992:989::/var/lib/chrony:/sbin/nologin
26 setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
27 sssd:x:990:987:User for sssd:/:/sbin/nologin
28 pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
29 gdm:x:42:42::/var/lib/gdm:/sbin/nologin
30 gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
31 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
32 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
33 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
34 tcpdump:x:72:72::/:/sbin/nologin
35 zhangxingeng:x:1000:1000:centos-7-64:/home/zhangxingeng:/bin/bash
36 nginx:x:988:983:Nginx web server:/var/lib/nginx:/sbin/nologin
37 lightdm:x:987:982::/var/lib/lightdm:/sbin/nologin
38 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
39 redis:x:986:981:Redis Database Server:/var/lib/redis:/sbin/nologin
40 mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
41 [root@web1 keepalived]# 

인 스 턴 스 6, 디 스 플레이/etc/rc. d/rc. sysinit 파일 에 최소한 공백 문자 로 시작 하고 뒤에 공백 문자 가 아 닌 줄 을 저장 합 니 다.
 1 [root@web1 keepalived]# grep "^[[:space:]]\+[[:graph:]]" /etc/grub2.cfg
 2   load_env
 3    set default="${next_entry}"
 4    set next_entry=
 5    save_env next_entry
 6    set boot_once=true
 7    set default="${saved_entry}"
 8   menuentry_id_option="--id"
 9   menuentry_id_option=""
10   set saved_entry="${prev_saved_entry}"
11   save_env saved_entry
12   set prev_saved_entry=
13   save_env prev_saved_entry
14   set boot_once=true
15   if [ -z "${boot_once}" ]; then
16     saved_entry="${chosen}"
17     save_env saved_entry
18   fi
19   if [ x$feature_all_video_module = xy ]; then
20     insmod all_video
21   else
22     insmod efi_gop
23     insmod efi_uga
24     insmod ieee1275_fb
25     insmod vbe
26     insmod vga
27     insmod video_bochs
28     insmod video_cirrus
29   fi
30   set timeout_style=menu
31   set timeout=5
32   set timeout=5
33   source ${prefix}/user.cfg
34   if [ -n "${GRUB2_PASSWORD}" ]; then
35     set superusers="root"
36     export superusers
37     password_pbkdf2 root ${GRUB2_PASSWORD}
38   fi
39         load_video
40         set gfxpayload=keep
41         insmod gzio
42         insmod part_msdos
43         insmod xfs
44         set root='hd0,msdos1'
45         if [ x$feature_platform_search_hint = xy ]; then
46           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  a9392b0d-ae01-41ce-b4a0-efb843235bfe
47         else
48           search --no-floppy --fs-uuid --set=root a9392b0d-ae01-41ce-b4a0-efb843235bfe
49         fi
50         linux16 /vmlinuz-3.10.0-514.el7.x86_64 root=UUID=11b66499-c82b-476f-8576-fc3690a4e26d ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8
51         initrd16 /initramfs-3.10.0-514.el7.x86_64.img
52         load_video
53         insmod gzio
54         insmod part_msdos
55         insmod xfs
56         set root='hd0,msdos1'
57         if [ x$feature_platform_search_hint = xy ]; then
58           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  a9392b0d-ae01-41ce-b4a0-efb843235bfe
59         else
60           search --no-floppy --fs-uuid --set=root a9392b0d-ae01-41ce-b4a0-efb843235bfe
61         fi
62         linux16 /vmlinuz-0-rescue-b7671beb75f14e95b5a58975dae3a897 root=UUID=11b66499-c82b-476f-8576-fc3690a4e26d ro crashkernel=auto rhgb quiet
63         initrd16 /initramfs-0-rescue-b7671beb75f14e95b5a58975dae3a897.img
64   source ${config_directory}/custom.cfg
65   source $prefix/custom.cfg;
66 [root@web1 keepalived]# 

인 스 턴 스 7. "netstat - tan"명령 을 찾 은 결 과 는 LISTEN 뒤꿈치 0, 1 또는 여러 개의 공백 문자 로 끝 납 니 다.
1 [root@web1 keepalived]# netstat -tan | grep "LISTEN[[:space:]]*$"
 2 tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
 3 tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
 4 tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
 5 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
 6 tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
 7 tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
 8 tcp6       0      0 :::111                  :::*                    LISTEN     
 9 tcp6       0      0 :::80                   :::*                    LISTEN     
10 tcp6       0      0 :::22                   :::*                    LISTEN     
11 tcp6       0      0 ::1:631                 :::*                    LISTEN     
12 tcp6       0      0 ::1:25                  :::*                    LISTEN     
  8、    bash、testbash、basher  nologin( shell /sbin/nologin);    /etc/passwd       shell   ;


   1 [root@web1 keepalived]# cat /etc/passwd | grep "\(^[[:alnum:]]\+\>\).*\\).*\1$" /etc/passwd
 7 sync:x:5:0:sync:/sbin:/bin/sync
 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 9 halt:x:7:0:halt:/sbin:/sbin/halt
10 bash:x:1001:1001::/home/bash:/bin/bash
11 nologin:x:1004:1004::/home/nologin:/sbin/nologin
12 [root@web1 keepalived]# 

\# 모든 숫자 와 문 자 를 설정 합 니 다. 최소한 하나 가 나타 나 기 때문에 + 를 사용 하여 전체 단어의 꼬리 를 정 한 다음 () 괄호 로 그룹 을 나 눕 니 다. * 중간 에 임의의 내용 을 따라 갑 니 다.\\1 $끝 은 괄호 안에 일치 합 니 다.
egrep 인 스 턴 스 9, 현재 시스템 루트, centos 또는 user 1 사용자 의 기본 셸 과 UID 를 표시 합 니 다.
 1 [root@web1 keepalived]# grep -E '^(root|centos|user1)\>' /etc/passwd | cut -d: -f 1,3,7
2 root:0:/bin/bash
  10、  /etc/rc.d/init.d/functions               


  1 [root@web1 keepalived]# grep -E -o "^[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
 2 checkpid()
 3 __kill_pids_term_kill_checkpids()
 4 __kill_pids_term_kill()
 5 __pids_var_run()
 6 __pids_pidof()
 7 daemon()
 8 killproc()
 9 pidfileofproc()
10 pidofproc()
11 status()
12 echo_success()
13 echo_failure()
14 echo_passed()
15 echo_warning()
16 update_boot_stage()
17 success()
18 failure()
19 passed()
20 warning()
21 action()
22 strstr()
23 is_ignored_file()
24 is_true()
25 is_false()
26 apply_sysctl()
27 [root@web1 keepalived]# 

#_이것 은 하이픈 입 니 다. + 한 번 이상 () 디 스 플레이 () 자체 인 스 턴 스 11, echo 출력 절대 경 로 를 사용 하여 egrep 로 기본 이름 을 추출 합 니 다.
 [root@web1 keepalived]#  echo "/mnt/sdc" | grep -E -o "[^/]+/?$" | cut -d"/" -f1
2 sdc

인 스 턴 스 12, ifconfig 명령 결과 에서 1 - 255 사이 의 수 치 를 찾 습 니 다. 여기 표 는 0 - 9, 10 - 99, 100 - 1999, 200 - 249, 250 - 255 입 니 다.
1 echo {1..1000} | egrep -o "\b[0-9]\b" | tr "
" " " ;echo 2 echo {1..1000} | egrep -o "\b[0-9]{2}\b" | tr "
" " " ;echo 3 echo {1..1000} | egrep -o "\b1[0-9]{2}\b" | tr "
" " " ;echo 4 echo {1..1000} | egrep -o "\b2[0-4][0-9]\b" | tr "
" " " ;echo 5 echo {1..1000} | egrep -o "\b25[0-5]\b" | tr "
" " " ;echo

인 스 턴 스 13, ifconfig 명령 결과 의 IP 주 소 를 찾 습 니 다.
 1 [root@web1 keepalived]# ifconfig|egrep -o "\"
2 255.255.255.0
3 127.0.0.1
4 255.0.0.0
5 192.168.122.1
6 255.255.255.0
7 192.168.122.255

좋은 웹페이지 즐겨찾기