[root@localhost ~]# cp /etc/passwd test.txt [root@localhost ~]# cat test.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 games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin [root@localhost ~]# grep -c 'nologin' test.txt 15
[root@localhost ~]# grep -n 'nologin' test.txt 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 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-network:x:192:192:systemd Network Management:/:/sbin/nologin 15:dbus:x:81:81:System message bus:/:/sbin/nologin 16:polkitd:x:999:997:User for polkitd:/:/sbin/nologin 17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin 18:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost ~]# grep -i 'nologin' test.txt 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 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 nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologi dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost ~]# grep -iv 'nologin' test.txt 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@localhost ~]# grep -r 'root' /etc/ > 2.txt [root@localhost ~]# grep -r '/etc/passwd' 2.txt /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin /etc/passwd-:root:x:0:0:root:/root:/bin/bash /etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -nA2 'root' test.txt 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/NOlogin 3-daemon:x:2:2:daemon:/sbin:/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
[root@localhost ~]# grep -nB2 'root' test.txt 1:root:x:0:0:root:/root:/bin/bash -- 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
[root@localhost ~]# grep -nC2 'root' test.txt 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/NOlogin 3-daemon:x:2:2:daemon:/sbin:/sbin/nologin -- 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
[root@localhost ~]# grep -n '[0-9]' test1.txt 9:# multi-user.target: analogous to runlevel 3 10:# graphical.target: analogous to runlevel 5
[root@localhost ~]# grep -vn '[0-9]' test1.txt 1:# inittab is no longer used when using systemd. 2:# 3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target 6:# 7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets: 8:# 11:# 12:# To view current default target, run: 13:# systemctl get-default 14:abcdefg 15:# 16:# To set a default target, run: 17:# systemctl set-default TARGET.target 18:#
[root@localhost ~]# grep -nv '^#' test1.txt 14:abcdefg
[root@localhost ~]# grep -n '^#' test1.txt 1:# inittab is no longer used when using systemd. 2:# 3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target 6:# 7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets: 8:# 9:# multi-user.target: analogous to runlevel 3 10:# graphical.target: analogous to runlevel 5 11:# 12:# To view current default target, run: 13:# systemctl get-default 15:# 16:# To set a default target, run: 17:# systemctl set-default TARGET.target 18:#
[root@localhost ~]# grep -nv '^#' test1.txt |grep -v '^$' 9:$123456 16:abcdefg
[root@localhost ~]# grep -n '^[^0-9]' test1.txt 1:# inittab is no longer used when using systemd. 2:# 3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target 6:# 7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets: 8:#abc123$ 9:$123456 11:aaabbbccc 13:# multi-user.target: analogous to runlevel 3 14:# graphical.target: analogous to runlevel 5 15:# 16:# To view current default target, run: 17:# systemctl get-default 18:abcdefg 19:# 20:# To set a default target, run: 21:# systemctl set-default TARGET.target 22:#
[root@localhost ~]# grep -nv '^[^0-9]' test1.txt 10:123 12:
[root@localhost ~]# grep "r..t" test1.txt # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # To view current default target, run: # To set a default target, run: # systemctl set-default TARGET.target
[root@localhost ~]# grep "r.*t" test1.txt # inittab is no longer used when using systemd. # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # To view current default target, run: # To set a default target, run: # systemctl set-default TARGET.target
[root@localhost ~]# grep 'o\{2\}' test.txt root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost ~]# egrep 'o{2}' test.txt root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost ~]# grep 'o\{1,3\}' test.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 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 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 nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost ~]# egrep 'o{1,3}' test.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 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 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 nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost ~]# grep -E 'root|nologin' test.txt root:x:0:0:root:/root:/bin/bash 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 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 nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologi dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost ~]# egrep 'root|nologin' test.txt root:x:0:0:root:/root:/bin/bash 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 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 nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologi dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin
主要是用來說數據進行選取、替換、刪除、新增的命令,若是不加-i選項是不會更改文件內容的,若是不肯定的狀況下,儘可能不要更改系統中的配置文件。python
-n :通常sed命令會把全部數據都輸出到屏幕上,若是加上-n 則會把通過sed命令處理過的命令輸出到屏幕上。linux
[root@localhost ~]# sed -n '/adm/'p test.txt adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@localhost ~]# cat 1.txt aaa bbb ccc 111 222 333 [root@localhost ~]# sed -n '2'p 1.txt bbb
[root@localhost ~]# sed '2a hello word' 1.txt aaa bbb hello word ccc 111 222 333
[root@localhost ~]# sed '2i hello word' 1.txt aaa hello word bbb ccc 111 222 333
[root@localhost ~]# sed '2d' 1.txt aaa ccc 111 222 333
[root@localhost ~]# sed '4c 444' 1.txt aaa bbb ccc 444 222 333
[root@localhost ~]# sed '1s/aaa/a1a/g' 1.txt a1a bbb ccc 111 222 333
[root@localhost ~]# sed -i '1s/aaa/a1a/g' 1.txt [root@localhost ~]# cat 1.txt a1a bbb ccc 111 222 333
[root@localhost ~]# sed -e '1c 111' -e '2c 222' 1.txt 111 222 ccc 111 222 333
awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據能夠來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更可能是做爲腳原本使用。awk有不少內建的功能,好比數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優點。正則表達式
[root@aminglinux ~]# mkdir awk [root@aminglinux ~]# cp /etc/passwd ./awk/test.txt [root@aminglinux ~]# cd awk/ [root@aminglinux awk]# ls test.txt [root@aminglinux awk]# awk -F ':' '{print $1}' test.txt root bin daemon adm lp sync shutdown ·····
[root@aminglinux awk]# awk -F ':' '{print $1"#"$2"#"$3}' test.txt root#x#0 bin#x#1 daemon#x#2 adm#x#3 lp#x#4 sync#x#5 shutdown#x#6 ······
[root@aminglinux awk]# awk '/oo/' test.txt root:x:0:0:root:/root:/bin/bash lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@aminglinux awk]# awk -F ':' '$1 ~ /oo/' test.txt root:x:0:0:root:/root:/bin/bash setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
[root@aminglinux awk]# awk -F ":" '/root/ {print $1,$3} /user/ {print $1,$3}' test.txt root 0 operator 11 saslauth 996 qemu 107 tss 59 usbmuxd 113 rpcuser 29 radvd 75 —————————————————————————————————————————————— [root@aminglinux awk]# awk -F ':' '/root|user/ {print $1,$3}' test.txt root 0 operator 11 saslauth 996 qemu 107 tss 59 usbmuxd 113 rpcuser 29 radvd 75 [root@aminglinux awk]# grep -E 'root|user' test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin
[root@aminglinux awk]# awk -F ':' '$3=="0"' test.txt root:x:0:0:root:/root:/bin/bash
[root@aminglinux awk]# awk -F ':' '$3>="500"' test.txt 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 nobody:x:99:99:Nobody:/:/sbin/nologin ———————————————————————————————————— [root@aminglinux awk]# awk -F ':' '$3>=500' test.txt polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
[root@aminglinux awk]# awk -F ':' '$7!="/sbin/nologin"' test.txt 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 centos7com:x:1000:1000:centos7.com:/home/centos7com:/bin/bash
[root@aminglinux awk]# awk -F ":" '$3<$4' test.txt adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@aminglinux awk]# awk -F ':' '$3>5 && $3<7' test.txt shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@aminglinux awk]# awk -F ":" '$3>1000 || $7=="/bin/bash"' test.txt root:x:0:0:root:/root:/bin/bash nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin centos7com:x:1000:1000:centos7.com:/home/centos7com:/bin/bash
[root@aminglinux awk]# awk -F ":" '$3>1000 || $7 ~ /bash/' test.txt root:x:0:0:root:/root:/bin/bash nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin centos7com:x:1000:1000:centos7.com:/home/centos7com:/bin/bash
[root@aminglinux awk]# awk -F ":" '{OFS="#"} $3==1000 {print $1,$2,$3}' test.txt centos7com#x#1000 —————————————————————————————————————————— [root@aminglinux awk]# awk -F ":" '{OFS="#"} {if ($3==1000) {print $1,$2,$3}}' test.txt centos7com#x#1000
[root@aminglinux awk]# awk -F ":" '{print NR":"$1,$2}' t est.txt 1:root x 2:bin x 3:daemon x 4:adm x 5:lp x 6:sync x 7:shutdown x 8:halt x 9:mail x 10:operator x 11:games x 12:ftp x 13:nobody x 14:systemd-network x 15:dbus x 16:polkitd x 17:abrt x 18:libstoragemgmt x 19:rpc x 20:colord x 21:saslauth x 22:rtkit x 23:chrony x 24:qemu x 25:tss x 26:usbmuxd x 27:geoclue x 28:rpcuser x 29:nfsnobody x 30:radvd x 31:setroubleshoot x 32:pulse x 33:gdm x 34:gnome-initial-setup x 35:sshd x 36:avahi x 37:postfix x 38:ntp x 39:tcpdump x 40:centos7com x
[root@aminglinux awk]# awk -F ":" '{print NF ":" $1}' test.txt 7:root 7:bin 7:daemon 7:adm 7:lp 7:sync 7:shutdown 7:halt 7:mail 7:operator 7:games 7:ftp 7:nobody 7:systemd-network 7:dbus 7:polkitd 7:abrt 7:libstoragemgmt 7:rpc 7:colord 7:saslauth 7:rtkit 7:chrony 7:qemu 7:tss 7:usbmuxd 7:geoclue 7:rpcuser 7:nfsnobody 7:radvd 7:setroubleshoot 7:pulse 7:gdm 7:gnome-initial-setup 7:sshd 7:avahi 7:postfix 7:ntp 7:tcpdump 7:centos7com
打印前10行編程
[root@aminglinux awk]# awk -F ":" 'NR<=10' test.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
還能夠添加附屬條件 打印前10行中第一段包含root或者sync的c#
[root@aminglinux awk]# awk -F ":" 'NR<=10 && $1 ~ /root|sync/' test.txt root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync
[root@aminglinux awk]# [root@aminglinux awk]# awk -F ":" '{(tot=tot+$3)}; END {print tot}' test.txt 76259