以下圖爲本章節的知識點結構圖。
【前言】我們在linux上敲過的命令是有記錄的。默認保存1000條。保存位置:.bash_history。但是前提是我們得正常退出。
【shell是什麼?】shell是一個腳本,不是一種正式的編程語言。shell也就是一些命令的集合,能夠幫助我們更加方便的管理服務器。
【shell特性】 !! 是執行上一條命令。
[root@localhost ~]# ls -l 11.txt -rw-r--r--. 1 root root 1536 Oct 18 03:27 11.txt [root@localhost ~]# !! ls -l 11.txt -rw-r--r--. 1 root root 1536 Oct 18 03:27 11.txt
!n:執行第n條歷史命令的意思。
[root@localhost ~]# !632 pwd /root
!字符串:執行最近的字符串命令。
[root@localhost ~]# !ls ls -l 11.txt -rw-r--r--. 1 root root 1536 Oct 18 03:27 11.txt
alias 命令別名 =‘具體別名’-----做別名。使用unalias解除別名(unalias 別名)。
[root@localhost ~]# alias senlin='ls' [root@localhost ~]# senlin 11 11.txt 1.txt 2.txt anaconda-ks.cfg install.log install.log.syslog
*:匹配多個或者零個字符。?:匹配一個字符。
[root@localhost ~]# ls 1* 11.txt 1.txt 11: 11 [root@localhost ~]# ls 1? 11
[root@localhost ~]# echo "aaa"> 11.txt [root@localhost ~]# echo "aaa">>11.txt [root@localhost ~]# cat 11.txt aaa aaa
| :管道符。把前面的命令結果丟給後面的。
[root@localhost ~]# cat 11.txt|wc -l 2
作業控制:當運行一個進程時,你可以使它暫停(按 Ctrl+z),然後使用 fg 命令恢復它,利用 bg 命令使他到後臺運行,你也可以使它終止(按 Ctrl+c)。多個被暫停的任務會有編號,使用 jobs 命令可以看到兩個任務,那麼使用 bg 或者 fg 的時候,就需要在後面加一個編號了,使用 bg 2 把第二個被暫停的任務丟到後臺跑起來了,丟入後臺需要使用在命令後邊加一個&符號,中間有個空格。先使用“fg 編號‘’把任務調到前臺,然後使用 Ctrl + c 結束任務。另外,關閉到當前的 shell,再次打開另一個 shell時,使用 jobs 命令並不會顯示在後臺運行或者被暫停的任務,要想停掉它的話,則需要先知道其 pid,然後使用 kill 命令殺死那個進程。
【shell變量】系統預設命令:PWD,HOME,LOGNAME;
[root@localhost ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
env:列出所有系統變量。注:用戶不同,值不同。
[root@localhost ~]# env HOSTNAME=localhost.localdomain SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.200.1 57505 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED= SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root SSH_CONNECTION=192.168.200.1 57505 192.168.200.131 22 LESSOPEN=||/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env
PATH:決定了 shell 將到哪些目錄中尋找命令或程序;
HOME:當前用戶主目錄 ;
HISTSIZE :歷史命令記錄數 ;
LOGNAME :當前用戶的登錄名 ;
HOSTNAME:指主機的名稱 ;
SHELL :前用戶 Shell 類型 ;
LANG :語言相關的環境變量,多語言可以修改此環境變量 ;
MAIL:當前用戶的郵件的存放目錄 ;
PWD:當前所在目錄;
set:列出所有預設命令,包括自定義的變量。雖然我們自定義變量,但是也只能在當前的shell使用。
設置的變量一直生效:需要在 /etc/profile 文件最末行加入export myname=senlin 然後運行 source /etc/profile 就可以生效了。
[root@localhost ~]# echo "exportmyname=senlin">>/etc/profile [root@localhost ~]# source !$ source /etc/profile [root@localhost ~]# bash [root@localhost ~]# echo $myname senlin [root@localhost ~]# exit exit
自定義變量的規則:
a. 設定變量的格式爲:a=b ,其中 a 爲變量名,b 爲變量的內容,等號兩邊不能有空格;
b. 變量名只能由英、數字以及下劃線組成,而且不能以數字開頭;
c. 當變量內容帶有特殊字符(如空格)時,需要加上單引號;
注意事項:
1.變量內容中本身帶有單引號,這就需要用到雙引號了;
2.變量內容中需要用到其他命令運行結果則可以使用反引號;
3.變量內容可以累加其他變量的內容,需要加雙引號;
4.單引號和雙引號的區別。用雙引號時不會取消掉裏面出現的特殊字符的本身作用,而使用單引號則裏面的特殊字符全部失去它本身的作用。
【系統和用戶的環境變量配置文件】
系統變量的保存位置:
/etc/profile:這個文件預設了幾個重要的變量,例如 PATH,USER,LOGNAME,MAIL, INPUTRC,
HOSTNAME,HISTSIZE,umask 等等。上節已經列出。
/etc/bashrc:這個文件主要預設 umask以及 PS1。
.bash_profile:定義了用戶的個人化路徑與環境變量的文件名稱。每個用戶都可使用該文件輸入專用
於自己使用的 shell 信息,當用戶登錄時,該文件僅僅執行一次。
.bashrc:該文件包含專用於你的 shell的 bash 信息,當登錄時以及每次打開新的 shell 時,該該文件被讀取。例如你可以將用戶自定義的 alias 或者自定義變量寫到這個文件中。
.bash_history:記錄命令歷史用的。
.bash_logout:當退出 shell時,會執行該文件。可以把一些清理的工作放到這個文件中。
【shell中的特殊符號】
* :零個或多個任意字符。
[root@localhost ~]# ls -d 1* 11 11.txt 1.txt
? :一個任意字符(數字或者字符)。
[root@localhost ~]# ls -d 1? 11
#:註釋符號。
[root@localhost ~]# ls -l #列出消息信息 total 72 drwxr-xr-x. 3 root root 4096 Oct 9 01:52 11 -rw-r--r--. 1 root root 8 Oct 24 18:48 11.txt -rw-r--r--. 1 root root 0 Oct 12 12:54 1.txt -rw-r--r--. 1 root root 1576 Oct 12 12:53 2.txt -rw-------. 1 root root 3332 Oct 1 01:28 anaconda-ks.cfg -rw-r--r--. 1 root root 40356 Oct 1 01:28 install.log -rw-r--r--. 1 root root 9154 Oct 1 01:27 install.log.syslog
\ :脫意符號(變爲普通無意義的字符)。
[root@localhost ~]# cat 11.txt\* cat: 11.txt*: No such file or directory
|:管道符(前面已經總結)。
$: 變量前的標識符或者和‘!’結合用(前面一節已經總結)。
;:執行兩個以上命令的分隔符。
[root@localhost ~]# ls 11.txt;cat 11.txt 11.txt aaa aaa
~ :特殊符號。家目錄:/root;普通用戶:/home/usname。
[root@localhost ~]# cd ~ #家目錄 [root@localhost ~]# pwd /root [root@localhost ~]# su chensenlin #普通用戶:陳森林 [chensenlin@localhost root]$ pwd /root [chensenlin@localhost root]$
$ :如果想把一條命令放到後臺執行的話,則需要加上這個符號。通常用於命令運行時間非常長的情況。
[chensenlin@localhost root]$ sleep 30 & [1] 3394 [chensenlin@localhost root]$ jobs [1]+ Running sleep 30&
[] :中間字符任意一個。
[root@localhost ~]# ls -d chen[1-3] chen1 chen2 chen3
【cut 命令-截取】
語法:cut -d ’分隔字符‘ dfc 數字
-d:後面指定分隔符,需要加單引號;
-f :指定第幾段;
-c 後面只有一個數字表示截取第幾個字符,後面跟一個數字區域,表示截取從幾到幾。
[root@localhost ~]# cat 11.txt | cut -d ';' -f 1|head -n3 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
【sort命令-排序】
語法: sort -t 分隔符 [-kn1,n2] [-nru]
-t 分隔符:後面指定分隔符,需要加單引號;
-n :使用純數字排序;
-r :反向排序;
-u :去重複。
[root@localhost ~]# head -n5 11.txt #如果 sort 不加任何選項,則從首字符向後,依次按 ASCII 碼值進行比較,最後將他們按升序輸出. 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 [root@localhost ~]# head -n5 11.txt|sort -t: -k3,5 -r lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin root:x:0:0:root:/root:/bin/bash
-k3,5 表示從第 3 到第 5 區域間的字符串排序,-r 表示反向排序。
【wc命令-統計】
wc :統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。該命令統計指定文件中的字節數、字數、行數。如果沒有給出文件名,則從標準輸入讀取。wc同時也給出所指定文件的總統計數。
-c 統計字節數;
-l 統計行數;
-m 統計字符數。這個標誌不能與 -c 標誌一起使用;
-w 統計字數。一個字被定義爲由空白、跳格或換行字符分隔的字符串;
-L 打印最長行的長度。
[root@localhost ~]# wc -l 11.txt 31 11.txt [root@localhost ~]# wc -m 11.txt 1445 11.txt [root@localhost ~]# wc -w 11.txt 46 11.txt [root@localhost ~]# wc -L 11.txt 79 11.txt [root@localhost ~]# wc -c 11.txt 1445 11.txt
【uniq 和tee 命令】
[root@localhost ~]# sort 1.txt|uniq 11 111 1111 11111 2222 333 3333 33333 4444 5 666 777
[root@localhost ~]# sort 1.txt|uniq -c 10 11 10 111 10 1111 1 11111 1 2222 20 333 10 3333 1 33333 1 4444 10 5 9 666 10 777
tee 命令,後跟文件名,類似與重定向’>’,但是比重定向多了一個功能,在把文件寫入後面所跟的文件中的同時,還顯示在屏幕上。
[root@localhost ~]# echo "qwqwqwqwqw"|tee1.txt qwqwqwqwqw [root@localhost ~]# cat 1.txt qwqwqwqwqw
【 tr 和 split 命令】
tr :替換字符(特殊字符);也可大小寫轉換。
-d :刪除字符;
-s:去重複。
[root@localhost ~]# head -n3 cat 1.txt |tr a-z A-Z head: cannot open `cat' for reading: No such file ordirectory ==> 1.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
split 用於切割文檔。
-b:依照大小切割。單位爲byte
-l:行數切割;
[root@localhost ~]# mkdir split_dir [root@localhost ~]# cd !$ cd split_dir [root@localhost split_dir]# cp /etc/passwd ./ [root@localhost split_dir]# split -b500 passwd [root@localhost split_dir]# ls passwd xaa xab xac [root@localhost split_dir]#
【shell 中連接符(並且、和、或者) 】
在上面剛剛提到了分號,用於多條命令間的分隔符。另外還有兩個可以用於多條命令中間的特殊符號,
那就是 &和||,下面把這幾種情況全列出:
(1) command1 ; command2
(2) command1 && command2
(3) command1 || command2
使用 ; 時,不管command1 是否執行成功都會執行command2。
使用 && 時,只有 command1 執行成功後,command2纔會執行,否則 command2 不執行。
使用 || 時,command1執行成功後 command2 不執行,否則去執行command2,總之 command1 和command2 總有一條命令會執行。
【grep 過濾】
-c :打印符合要求的行數;
-n :在輸出符合要求的行的同時連同行號一起輸出;
-v :打印不符合要求的行 ;
-A :後跟一個數字(有無空格都可以),例如 –A2 則表示打印符合要求的行以及下面兩行;
-B :後跟一個數字,例如 –B2 則表示打印符合要求的行以及上面兩行 ;
-C :後跟一個數字,例如 –C2 則表示打印符合要求的行以及上下各兩行;
-r : 會把目錄下面所有的文件全部遍歷;
--color: 把匹配到的關鍵詞用紅色標識;
[root@localhost ~]# #grep -n 'root' 1.txt 過濾出帶有某個關鍵字的行並輸出行號。 [root@localhost ~]# #grep -n -v 'root' 1.txt 過濾出不帶有某個關鍵字的行並輸出行號。 [root@localhost ~]# #grep '[0-9]' 1.txt 過濾包含數字的行 [root@localhost ~]# #grep -n -v '[0-9]' 1.txt 過濾出所有包含數字的行並輸出行號 [root@localhost ~]# #grep -n -v '^#' 1.txt 去除所有以'#'開頭的行 [root@localhost ~]# #grep -v '^#'1.txt|grep -v'^$' 去除所有以'#'開頭的行和空行 [root@localhost ~]# #grep '^[a-zA-Z]' 1.txt 過濾出以英文字母開頭的行 [root@localhost ~]# #grep '^[0-9]' 1.txt 過濾出以非數字開頭的行 [root@localhost ~]# #grep 'r.o'1.txt; grep 'r*t'1.txt; grep 'r.*t' 1.txt 過濾任意一個或多個字符 [root@localhost ~]# #grep -A1 'root' 1.txt 過濾出包含 root 的行以及下面一行 [root@localhost ~]# #grep -B1 'root' 1.txt 過濾出包含 root 的行以及上面一行 [root@localhost ~]# #grep 'o\{2\}' 1.txt 指定過濾字符次數
. 表示任意一個字符;
* 表示零個或多個前面的字符;
.* 表示零個或多個任意字符,空行也包含在內。
【egrep 命令】
egrep 工具是 grep 工具的擴展,它可以實現所有 grep 的功能,grep -E == egrep 。
[root@localhost ~]# alias egrep='egrep --color' #做別名 [root@localhost ~]# #egrep 'o+' 1.txt 匹配 1 個或 1 個以上+前面的字符 [root@localhost ~]# # egrep 'o?' 1.txt 匹配 0 個或者 1 個?前面字符 [root@localhost ~]# #egrep 'roo|passwd' 1.txt 匹配 roo 或者匹配 passwd [root@localhost ~]# # egrep '(oo)+' 1.txt 匹配 1 個或者多個 'oo';括號表示一個整體
. 表示任意一個字符(包括特殊字符);
* 表示零個或多個*前面的字符;
.* 表示任意個任意字符(包含空行);
+ 表示 1 個或多個+前面的字符;
? 表示 0 個或 1 個?前面的字符;
其中,+和? grep 不支持,egrep 才支持。
【sed 命令】
sed 可以實現 grep 的大部分功能,而且還可以查找替換。
打印指定行
[root@localhost ~]# sed '10'p -n 1.txt uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin [root@localhost ~]# sed '1,4'p -n 1.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
[root@localhost ~]# sed '15,$'p -n 1.txt gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin vcsa:x:69:69:virtual console memoryowner:/dev:/sbin/nologin rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin pulse:x:498:496:PulseAudio SystemDaemon:/var/run/pulse:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin saslauth:x:497:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin chensenlin:x:500:500:CentOS6.7:/home/chensenlin:/bin/bash
打印包含”root“(某個字符串)的行;
[root@localhost ~]# sed -n '/root/'p 1.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
特殊符號;
[root@localhost ~]# sed -n '/ro.t/'p 1.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# sed -n '/^roo/'p 1.txt root:x:0:0:root:/root:/bin/bash
sed 不識別+|{}()等符號,需要藉助脫義符號\或者使用選項-r;
-e 實現多任務;
[root@localhost ~]# sed -e 'root/p' -e '/body/p' -n1.txt nobody:x:99:99:Nobody:/:/sbin/nologin
刪除指定的行;
[root@localhost ~]# sed '/root/d' 1.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 sync:x:5:0:sync:/sbin:/bin/sync
替換的使用:s是替換;g是全局替換;
[root@localhost ~]# sed '1.2s/ot/to/g' 1.txt
刪除所有數字和刪除所有非數字;
[root@localhost ~]# #sed 's/[0-9]//g' 1.txt [root@localhost ~]# #sed 's/[^0-9]//g' 1.txt
調換兩個字符串位置;
[root@localhost ~]# head -n2 1.txt |sed -r 's/(root)(.*)(bash)/\3\2\1/' –
i :直接修改文件內容;
[root@localhost ~]# sed -i 's/ot/to/g' 1.txt
【awk 命令】
截取文檔中的某段
[root@localhost ~]# awk -F ':' '{print $1}' 1.txt
說明: -F 指定分隔符號爲 :
也可以使用自定義字符連接每個段
[root@localhost ~]# awk -F':' '{print $1"#"$2"#"$3"#"$4}' 1.txt
或者使用 awk 內部變量 OFS,格式如下:
# awk -F ':' '{OFS="#"} {print $1,$2,$3,$4}' 1.txt
匹配字符或字符串
[root@localhost ~]# awk '/oo/' 1.txt
針對某個段匹配
[root@localhost ~]# awk -F ':' '$1 ~/oo/' 1.txt
多次匹配
[root@localhost ~]# awk -F ':' '/root/ {print $1,$3}; $1 ~/test/; $3 ~/20/' 1.txt
條件操作符==, >,<,!=,>=;<=
第三段爲 0
[root@localhost ~]# awk -F ':' '$3=="0"' 1.txt;
第三段大於等於 500
[root@localhost ~]# awk -F ':' '$3>=500' 1.txt;
說明:當比較數字時,不能加雙引號,如果寫成$3>="500"就不符合我們的需求了。
第七段不是'/sbin/nologin'
[root@localhost ~]# awk -F ':' '$7!="/sbin/nologin"' 1.txt;
第三段小於第四段
[root@localhost ~]# awk -F ':' '$3<$4' 1.txt ;
第三段大於 5,並且第三段小於 7
[root@localhost ~]# awk -F ':' '$3>5 && $3<7' 1.txt
第三段大於 5 或者第七段爲'/bin/bash'
[root@localhost ~]# awk -F ':' '$3>"5" || $7=="/bin/bash"' 1.txt
awk 內置變量 NF(段數) NR(行數)
[root@localhost ~]# head -n3 1.txt | awk -F ':' '{print NF}' [root@localhost ~]# head -n3 1.txt | awk -F ':' '{print $NF}' [root@localhost ~]# head -n3 1.txt | awk -F ':' '{print NR}'
打印 20 行以後的行
[root@localhost ~]# awk 'NR>20' 1.txt
打印 20 行以後並且第一段包含'ssh'的行
[root@localhost ~]# awk -F ':' 'NR>20 && $1 ~ /ssh/' 1.txt
更改某個段的值
[root@localhost ~]# awk -F ':' '$1="root"' 1.txt
數學計算, 把第三段和第四段值相加,並賦予第七段
[root@localhost ~]# awk -F ':' '{$7=$3+$4; print $0}' 1.txt
但是這樣的話,相當於改變了原來文本的結構,所以 print $0 的時候就不再有分隔符顯示。如果想顯
示分隔符需要藉助 OFS
[root@localhost ~]# awk -F ':' '{OFS=":"} {$7=$3+$4; print $0}' 1.txt
計算第三段的總和
[root@localhost ~]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' 1.txt
awk 中也可以使用 if 關鍵詞
[root@localhost ~]# awk -F ':' '{if ($1=="root") print $0}' 1.txt
!!總結完畢。