^ 行首 $ 行尾 . 除了換行符之外的任意單個字符 * 前導字符的零個或多個 .* 全部字符 [] 字符組內的任一字符 [^] 對字符組內的每一個字符取反(不匹配字符組內的每一個字符) ^[^] 非字符組內的字符開頭的行 [a-z] 小寫字母 [A-Z] 大寫字母 [a-Z] 小寫和大寫字母 [0-9] 數字 \< 單詞頭 單詞通常以空格或特殊字符作分隔,連續的字符串被當作單詞 \> 單詞尾 擴展正則 加 -r 參數 或轉義 sed -n '/roo\?/p' /etc/passwd sed -rn '/roo?/p' /etc/passwd ? 前導字符零個或一個 + 前導字符一個或多個 abc|def abc或def a(bc|de)f abcf 或 adef x\{m\} x出現m次 x\{m,\} x出現m次至屢次(至少m次) x\{m,n\} x出現m次至n次
-n :顯示行號
-o :只顯示匹配的內容
-q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容
-l :若是匹配成功,則只將文件名打印出來,失敗則不打印,一般-rl一塊兒用,grep -rl 'root' /etc
-A :若是匹配成功,則將匹配行及其後n行一塊兒打印出來
-B :若是匹配成功,則將匹配行及其前n行一塊兒打印出來
-C :若是匹配成功,則將匹配行及其先後n行一塊兒打印出來
--color
-c :若是匹配成功,則將匹配到的行數打印出來
-E :等於egrep,擴展
-i :忽略大小寫
-v :取反,不匹配
-w:匹配單詞linux
[root@scott dir]# grep -i 'hello' test.py print('韋哥hello!') [root@scott dir]# grep -i '正方形' test.py print('韋哥正方形打野!') [root@scott dir]# grep -iv '正方形' test.py #coding:utf-8 print('韋哥蛇蛇蛇社會搖!') print('韋哥hello!') print('韋哥三角形中單!') print('韋哥蛇皮走位!') print('韋哥騷騷!') print('韋哥蛇蛇蛇社會搖!') [root@scott dir]# grep -c '正方形' test.py 1 [root@scott dir]# grep -c 'hello' test.py 1 [root@scott dir]# grep -c '韋哥' test.py 7 [root@scott dir]# grep -n '打野' test.py 4:print('韋哥正方形打野!') [root@scott dir]# grep -C 2 '打野' test.py print('韋哥蛇蛇蛇社會搖!') print('韋哥hello!') print('韋哥正方形打野!') print('韋哥三角形中單!') print('韋哥蛇皮走位!') [root@scott dir]# grep -A 2 '打野' test.py print('韋哥正方形打野!') print('韋哥三角形中單!') print('韋哥蛇皮走位!') [root@scott dir]# grep -B 2 '打野' test.py print('韋哥蛇蛇蛇社會搖!') print('韋哥hello!') print('韋哥正方形打野!')
流編輯器 stream editer,是以行爲單位的處理程序正則表達式
sed 流編輯器 stream editerbash
sed [options] 'command' in_file[s]ssh
-n #部位每一個命令生成輸出,等待print命令輸出
-e script #將script中的命令添加到運行的命令中
-i #確認修改sed操做而且保存
-f file #將file中的命令添加到運行的命令中編輯器
'[地址1,地址2] [函數] [參數(標記)]'函數
定址的方法 1.數字 2.正則atom
數字
十進制數
1 單行
1,3 範圍 從第一行到第三行
2,+4 匹配行後若干行
4,~3 從第四行到下一個3的倍數行
2~3 第二行起每間隔三行的行
$ 尾行
1! 除了第一行之外的行code
正則
正則必須用//包裹起來
擴展正則須要用 -r 參數或轉義
數字定址:sed -n '1p' /etc/passwd
正則定址:sed -n '/^root/p' /etc/passwdserver
目標文件/etc/passwd,使用grep命令或egrepip
[root@scott etc]# egrep 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
[root@scott etc]# egrep -C2 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -- halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@scott etc]# egrep -c 'nologin' /etc/passwd 40
[root@scott etc]# egrep -nw 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
[root@scott etc]# egrep 'a[b|n|t]omi*' /etc/passwd abominable:x:1207:1208::/home/abominable:/bin/bash abominate:x:1208:1209::/home/abominate:/bin/bash anomie:x:1209:1210::/home/anomie:/bin/bash atomize:x:1210:1211::/home/atomize:/bin/bash
egrep 'a.omi(nabl|nat|z|)e' /etc/passwd
建四個用戶
Alex213sb
Wpq2222b
yH438PIG
egon666
egon
過濾出用戶名組成是字母+數字+字母的行
[root@scott etc]# egrep '[^a-Z][0-9][a-Z$]' /etc/passwd Alex213sb:x:1207:1208::/home/Alex213sb:/bin/bash Wpq222b:x:1208:1209::/home/Wpq222b:/bin/bash yH438PIG:x:1209:1210::/home/yH438PIG:/bin/bash
[root@MiWiFi-R3-srv ~]# egrep '^[a-Z]+[0-9]+[a-Z]+' /etc/passwd
[root@scott etc]# find -type f -print|grep 'root' ./selinux/targeted/contexts/users/root ./sysconfig/readonly-root ./security/chroot.conf ./unbound/root.key
[root@scott etc]# grep -v '#' /etc/ssh/sshd_config|grep -v '^ *$' HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes UsePrivilegeSeparation sandbox AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server
標準答案以及結果
[root@scott etc]# grep -v '^#' /etc/ssh/sshd_config |grep -v '^ *$' HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes UsePrivilegeSeparation sandbox # Default for new installations. AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server
grep -v '^#' /etc/ssh/sshd_config |grep -v '^ *$'
[root@scott ~]# sed 's/^[a-Z]//g' /test/dir/multicom.txt oot:x:0:0:root:/root:/bin/bash in:x:1:1:bin:/bin:/sbin/nologin aemon:x:2:2:daemon:/sbin:/sbin/nologin dm:x:3:4:adm:/var/adm:/sbin/nologin p:x:4:7:lp:/var/spool/lpd:/sbin/nologin ync:x:5:0:sync:/sbin:/bin/sync hutdown:x:6:0:shutdown:/sbin:/sbin/shutdown alt:x:7:0:halt:/sbin:/sbin/halt ail:x:8:12:mail:/var/spool/mail:/sbin/nologin perator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/(^.)(.)/\1/g' /test/dir/multicom.txt rot:x:0:0:root:/root:/bin/bash bn:x:1:1:bin:/bin:/sbin/nologin demon:x:2:2:daemon:/sbin:/sbin/nologin am:x:3:4:adm:/var/adm:/sbin/nologin l:x:4:7:lp:/var/spool/lpd:/sbin/nologin snc:x:5:0:sync:/sbin:/bin/sync sutdown:x:6:0:shutdown:/sbin:/sbin/shutdown hlt:x:7:0:halt:/sbin:/sbin/halt mil:x:8:12:mail:/var/spool/mail:/sbin/nologin oerator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/.$//g' /test/dir/multicom.txt root:x:0:0:root:/root:/bin/bas bin:x:1:1:bin:/bin:/sbin/nologi daemon:x:2:2:daemon:/sbin:/sbin/nologi adm:x:3:4:adm:/var/adm:/sbin/nologi lp:x:4:7:lp:/var/spool/lpd:/sbin/nologi sync:x:5:0:sync:/sbin:/bin/syn shutdown:x:6:0:shutdown:/sbin:/sbin/shutdow halt:x:7:0:halt:/sbin:/sbin/hal mail:x:8:12:mail:/var/spool/mail:/sbin/nologi operator:x:11:0:operator:/root:/sbin/nologi
[root@scott ~]# sed -r 's/(.)(.$)/\2/g' /test/dir/multicom.txt root:x:0:0:root:/root:/bin/bah bin:x:1:1:bin:/bin:/sbin/nologn daemon:x:2:2:daemon:/sbin:/sbin/nologn adm:x:3:4:adm:/var/adm:/sbin/nologn lp:x:4:7:lp:/var/spool/lpd:/sbin/nologn sync:x:5:0:sync:/sbin:/bin/syc shutdown:x:6:0:shutdown:/sbin:/sbin/shutdon halt:x:7:0:halt:/sbin:/sbin/hat mail:x:8:12:mail:/var/spool/mail:/sbin/nologn operator:x:11:0:operator:/root:/sbin/nologn
[root@scott ~]# sed -r 's/^([a-Z]+)([^a-Z])([a-Z])/\1\2/g' /test/dir/multicom.txt root::0:0:root:/root:/bin/bash bin::1:1:bin:/bin:/sbin/nologin daemon::2:2:daemon:/sbin:/sbin/nologin adm::3:4:adm:/var/adm:/sbin/nologin lp::4:7:lp:/var/spool/lpd:/sbin/nologin sync::5:0:sync:/sbin:/bin/sync shutdown::6:0:shutdown:/sbin:/sbin/shutdown halt::7:0:halt:/sbin:/sbin/halt mail::8:12:mail:/var/spool/mail:/sbin/nologin operator::11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/([a-Z]+)([^a-Z])([a-Z]+)$/\2\3/g' /test/dir/multicom.txt root:x:0:0:root:/root://bash bin:x:1:1:bin:/bin://nologin daemon:x:2:2:daemon:/sbin://nologin adm:x:3:4:adm:/var/adm://nologin lp:x:4:7:lp:/var/spool/lpd://nologin sync:x:5:0:sync:/sbin://sync shutdown:x:6:0:shutdown:/sbin://shutdown halt:x:7:0:halt:/sbin://halt mail:x:8:12:mail:/var/spool/mail://nologin operator:x:11:0:operator:/root://nologin
[root@scott ~]# sed -r 's/([^a-Z])([a-Z]+)$/\1/g' /test/dir/multicom.txt root:x:0:0:root:/root:/bin/ bin:x:1:1:bin:/bin:/sbin/ daemon:x:2:2:daemon:/sbin:/sbin/ adm:x:3:4:adm:/var/adm:/sbin/ lp:x:4:7:lp:/var/spool/lpd:/sbin/ sync:x:5:0:sync:/sbin:/bin/ shutdown:x:6:0:shutdown:/sbin:/sbin/ halt:x:7:0:halt:/sbin:/sbin/ mail:x:8:12:mail:/var/spool/mail:/sbin/ operator:x:11:0:operator:/root:/sbin/
[root@scott ~]# sed -r 's/^([a-z])([a-z])/\2\1/g' /test/dir/multicom.txt orot:x:0:0:root:/root:/bin/bash ibn:x:1:1:bin:/bin:/sbin/nologin ademon:x:2:2:daemon:/sbin:/sbin/nologin dam:x:3:4:adm:/var/adm:/sbin/nologin pl:x:4:7:lp:/var/spool/lpd:/sbin/nologin ysnc:x:5:0:sync:/sbin:/bin/sync hsutdown:x:6:0:shutdown:/sbin:/sbin/shutdown ahlt:x:7:0:halt:/sbin:/sbin/halt amil:x:8:12:mail:/var/spool/mail:/sbin/nologin poerator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/^([a-z])([a-z]+)([^a-z])([a-z]+)/\4\2\3\1/g' /test/dir/multicom.txt xoot:r:0:0:root:/root:/bin/bash xin:b:1:1:bin:/bin:/sbin/nologin xaemon:d:2:2:daemon:/sbin:/sbin/nologin xdm:a:3:4:adm:/var/adm:/sbin/nologin xp:l:4:7:lp:/var/spool/lpd:/sbin/nologin xync:s:5:0:sync:/sbin:/bin/sync xhutdown:s:6:0:shutdown:/sbin:/sbin/shutdown xalt:h:7:0:halt:/sbin:/sbin/halt xail:m:8:12:mail:/var/spool/mail:/sbin/nologin xperator:o:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/^([a-z]+)([^a-z]+)(.*)([^a-z]+)([a-z]+)$/\5\2\3\4\1/g' /test/dir/multicom.txt bash:x:0:0:root:/root:/bin/root nologin:x:1:1:bin:/bin:/sbin/bin nologin:x:2:2:daemon:/sbin:/sbin/daemon nologin:x:3:4:adm:/var/adm:/sbin/adm nologin:x:4:7:lp:/var/spool/lpd:/sbin/lp sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt nologin:x:8:12:mail:/var/spool/mail:/sbin/mail nologin:x:11:0:operator:/root:/sbin/operator
[root@scott ~]# sed -r 's/[0-9]+//g' /test/dir/multicom.txt root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x:::daemon:/sbin:/sbin/nologin adm:x:::adm:/var/adm:/sbin/nologin lp:x:::lp:/var/spool/lpd:/sbin/nologin sync:x:::sync:/sbin:/bin/sync shutdown:x:::shutdown:/sbin:/sbin/shutdown halt:x:::halt:/sbin:/sbin/halt mail:x:::mail:/var/spool/mail:/sbin/nologin operator:x:::operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/^ *//g' /test/dir/multicom.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 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/ /|/g' /test/dir/multicom.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 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/[0-9]/(&)/g' /test/dir/multicom.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 mail:x:(8):(1)(2):mail:/var/spool/mail:/sbin/nologin operator:x:(1)(1):(0):operator:/root:/sbin/nologin
[root@scott ~]# sed -r '{p;p}' /test/dir/multicom.txt root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync sync:x:5:0:sync:/sbin:/bin/sync sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt halt:x:7:0:halt:/sbin:/sbin/halt halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
[root@scott ~]# sed -r 's/^([a-z]+)([^a-z])(.*)/\1/g' /test/dir/multicom.txt root bin daemon adm lp sync shutdown halt mail operator
17.打印每行的第一個單詞和第三個單詞。
[root@scott ~]# sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)(.*)/\5/g' /test/dir/multicom.txt root bin daemon adm lp sync shutdown halt mail operator