Linux 文本处理三剑客应用
Linux 系統中文本處理有多種不同的方式,系統為我們提供了三個實用命令,來實現對行列的依次處理功能,grep命令文本過濾工具,cut列提取工具,sed文本編輯工具,以及awk文本報告生成工具,利用這三個工具可以靈活的過濾截取任何系統文本內容。
Grep 文本過濾工具
grep 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來,在Linux系統中是最常用的行匹配提取工具.
[root@localhost ~]# grep --help命令語法:[ grep [選項] [過濾菜單] 文件名 ]-a #將二進制數據一同列出-c #計算找到查找字符串的次數-i #忽略大小寫差異-n #標號顯示-v #反選參數-q #不顯示任何提示信息,安靜模式-E #使用擴展正則,egrep-A #匹配指定字符的后n個字符-B #匹配指定字符的前n個字符-C #匹配指定字符的前n個和后n個字符匹配任意多次字符: 使用*實現匹配前一個字符出現0次或任意多次(本例則是匹配g字符出現0次或任意多次)
[root@localhost ~]# ls blog bloog blooog[root@localhost ~]# ls | grep -o "blo*g" blog bloog blooog匹配任意一個字符: 使用.實現匹配除換行符以外的任意一個字符,(只匹配一個字符),一般我們把這種匹配模式叫做貪婪匹配
[root@localhost ~]# ls blog bloog blooog[root@localhost ~]# ls | grep -o "blo.g" bloog [root@localhost ~]# ls | grep -o "blo..g" blooog匹配行首行尾字符: 使用^匹配行首是指定字符的文本,相反使用$匹配行尾是指定字符的文本
[root@localhost ~]# ls alert lyshark tcpl wakaka wang wangg wanggg woxin[root@localhost ~]# ls | grep "^ly" lyshark [root@localhost ~]# ls | grep "^a" alert [root@localhost ~]# ls | grep "a$" wakaka [root@localhost ~]# ls | grep "ark$" lyshark [root@localhost ~]# ls | grep "^w" | grep "n$" woxin匹配括號范圍以內字符: 使用[]匹配中括號內任意一個字符,只匹配其中一個
[root@localhost ~]# ls ale1t ale2t ale3t aleat alebt alert[root@localhost ~]# ls | grep "ale[a-z]t" aleat alebt alert [root@localhost ~]# ls | grep "ale[0-9]t" ale1t ale2t ale3t [root@localhost ~]# ls | grep "ale[ab]t" aleat alebt匹配括號范圍以外字符: 使用[^]匹配除了中括號字符以外的任意一個字符,符號^取反的意思.
[root@localhost ~]# ls ale1t ale2t ale3t aleat aleAt aleBB alebt aleCT aleEt alert[root@localhost ~]# ls | grep "ale[^0-9]t" aleat aleAt alebt aleEt alert [root@localhost ~]# ls | grep "ale[^A-Z]t" ale1t ale2t ale3t aleat alebt alert [root@localhost ~]# ls | grep "ale[^AE]t" ale1t ale2t ale3t aleat alebt alert匹配行首某字符: 使用^[^]匹配行首是與不是指定字符的行,匹配行首是否是或不是某一個字符的記錄.
[root@localhost ~]# ls ale1t ale2t lyshark tcpl wakaka wang wangg wanggg woxin[root@localhost ~]# ls | grep ^[a] #匹配行首是a開頭 ale1t ale2t [root@localhost ~]# ls | grep ^[^a] #匹配行首不是a開頭 lyshark tcpl wakaka wang wangg wanggg woxin [root@localhost ~]# ls | grep -n "^[^a-zA-Z]" #匹配開頭不是a-z,A-Z的行 8:123123 9:1233 10:66431 11:124adb匹配恰好出現次數行: 使用\{n}\匹配前面的字符恰好出現了n次的行
[root@localhost ~]# ls 12333 13466614578 13562653874 172.168.1.2 18264758942 192.168.1.1 45666 78999[root@localhost ~]# ls | grep -o "123\{3\}" 12333 [root@localhost ~]# ls | grep "[0-9][0-9][0-9]\{3\}" #匹配前兩個字符是0-9的,最后一個字符出現過3次的 12333 45666 78999 [root@localhost ~]# ls | grep "[1][3-8][0-9]\{9\}" #匹配手機號規則 13466614578 13562653874 18264758942匹配不小于出現次數行: 使用\{n,}\匹配前面字符出現,不小于n次的行
[root@localhost ~]# ls 12333 123333 1233333[root@localhost ~]# ls | grep "123\{3,\}" #前一個字符3的出現不小于3次 12333 123333 1233333 [root@localhost ~]# ls | grep "123\{4,\}" #前一個字符3的出現不小于4次 123333 1233333匹配不小于且不大于次數行: 使用\{n,m}\匹配前面的字符出現,不小于n次,最多出現m次的行
[root@localhost ~]# ls 123 1233 12333 123333 1233333 12333333 123333333 1233333333 12333333333[root@localhost ~]# ls |grep "123\{3,5\}" #前一個字符3最少出現3次,最多不大于5次 12333 123333 1233333匹配出現1次或任意多次的行: 使用+匹配前一個字符出現1次或任意多次的行
[root@localhost ~]# ls gogle google gooogle gooogooogle goooogle gooooogle goooooogle[root@localhost ~]# ls | grep -E "go+gle" gogle google gooogle goooogle gooooogle goooooogle匹配出現0次或1次的行: 使用?匹配前一個字符出現過0次或1次,最少0次,最多1次.
[root@localhost ~]# ls gogle google gooogle gooogooogle goooogle gooooogle goooooogle[root@localhost ~]# ls | grep -E "go?gle" gogle [root@localhost ~]# ls | grep -E "goo?gle" gogle google匹配分支選擇行: 使用|匹配兩個或多個分支選擇,從特定分支內選擇不同的關鍵詞匹配查詢
[root@localhost ~]# ls alert lyshark rui wang[root@localhost ~]# ls | grep -E "alert|lyshark" alert lyshark [root@localhost ~]# ls | grep -E "wang|rui|alert" alert rui wang匹配模式單元行: 使用()將字符作為一個整體匹配,即模式單元匹配
[root@localhost ~]# ls dog dogdog dogdogdog hello_lyshark hello_world[root@localhost ~]# ls | grep -E "(dog)+" dog dogdog dogdogdog [root@localhost ~]# ls | grep -E "hello_(world|lyshark)" hello_lyshark hello_world匹配日期與時間行: 使用正則匹配文本中的日期與時間
# 匹配24小時時間 [root@localhost ~]# cat | grep -E "^[0-23]{2}:[0-59]{2}:[0-59]{2}" 12:00:00 13:55:00 01:11:22# 匹配12小時時間 [root@localhost ~]# cat | grep -E "^[0-12]{2}:[0-59]{2}:[0-59]{2}" 12:00:00 01:11:22# 匹配年月日 [root@localhost ~]# cat | grep -E "^([0-9]{4})-([0-12]{2})-([0-31]{2})" 2019-10-10 2014-01-01# 匹配并輸出/var/log/secure特殊時間格式 [root@localhost ~]# cat | grep -o -E "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sept|Oct|Nov|Dec) ([0-9]{2})" Jan 16 Nov 17過濾空白行與注釋行: 過濾掉開頭是#號的,和開頭是空行的行,實現去掉注釋與空白行
[root@localhost ~]# cat lyshark.log | grep -v "^#" | grep -v "^$" ADMIN Good 123123 1233. 66431.匹配開頭結尾的行: 匹配開頭是0-9且結尾是點的行
[root@localhost ~]# cat lyshark.log |grep -n -E "^[0-9]+\." 9:1233. 10:66431.匹配IP/MAC相關地址行: 正則匹配IP地址,與匹配MAC地址
# 匹配IPV4地址 [root@localhost ~]# ifconfig | egrep -o "(([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])" 192.168.150.128 255.255.255.0 192.168.150.25# 匹配IPV6地址 [root@localhost ~]# ifconfig | egrep -o "[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){0,7}::[a-f0-9]{0,4}(:[a-f0-9]{1,4}){0,7}" fe80::d5d5:6d6d:3e86:c3e1# 匹配MAC地址 [root@localhost ~]# ifconfig | egrep -o "([0-9]|[a-z]){2,2}:([0-9]|[a-z]){2,2}:([0-9]|[a-z]){2,2}:([0-9]|[a-z]){2,2}:([0-9]|[a-z]){2,2}:([0-9]|[a-z]){2,2}" 00:0c:29:72:77:7f# 匹配郵箱(測試) [root@localhost ~]# egrep -o "^[0-9a-zA-Z][0-9a-zA-Z_]{1,16}[0-9a-zA-Z]\@[0-9a-zA-Z-]*([0-9a-zA-Z])?\.(com|com.cn|net|org|cn)$"Cut 列提取工具
cut命令用來顯示行中的指定部分,刪除文件中指定字段,cut經常用來顯示文件的內容,類似于type命令.該命令顯示文件的內容,它依次讀取由參數file所指明的文件,將它們的內容輸出到標準輸出上.
[root@localhost ~]# cut --help命令語法:[ cut [選項] [列號] 文件名 ]-f #-f 列號:指定提取第幾列-d #-d 分隔符:按照指定分隔符進行分割-c #-c 字符范圍:不依賴分割符來分割,而是通過字符范圍進行字段提取-m #表示從第一個字符提取到第m個-b #僅顯示行中指定直接范圍的內容-n #與"-b"選項連用,不分割多字節字符n- #表示從第n個字符開始提取到結尾n-m #表示從第n提取到第m個字符--complement #補齊被選擇的字節,字符或字段--out-delimiter=<字段分隔符> #指定輸出內容是的字段分割符手動創建一個文本,添加內容列之間用tab分隔,用來測試后續內容
[root@localhost ~]# cat lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88通過使用 -f 選項指定過濾的列,并顯示到屏幕
[root@localhost ~]# cut -f 2 lyshark.log NAME WR LC LY [root@localhost ~]# cut -f 2,5 lyshark.log NAME Mark WR 100 LC 90 LY 88通過使用 --complement 選項提取指定字段之外的列,(打印除了第2列之外的列)
[root@localhost ~]# cut -f 2 --complement lyshark.logID AGE Gender Mark 1 22 m 100 2 26 m 90 3 23 m 88通過使用 -c 選項過濾/etc/passwd,并打印第1個到第3個字符
[root@localhost ~]# cut -c 1-3 /etc/passwd roo bin dae通過使用 -c -2 選項過濾/etc/passwd,并打印前2個字符
[root@localhost ~]# cut -c -2 /etc/passwd ro bi da通過使用 -c 5- 選項過濾/etc/passwd,打印從第5個字符開始到結尾
[root@localhost ~]# cut -c 5- /etc/passwd :x:0:0:root:/root:/bin/bash x:1:1:bin:/bin:/sbin/nologin通過使用 -d 指定分隔符 -f 指定打印第個字段,以下我們分別截取第1和第7個字段
[root@localhost ~]# cut -d ":" -f 1,7 /etc/passwd root:/bin/bash bin:/sbin/nologin daemon:/sbin/nologin通過使用 -c -3 指定截取前3個字符,還可以通過 -c 3 截取第3個字符
[root@localhost ~]# cut -c -3 /etc/passwd roo bin dae [root@localhost ~]# cut -c 3 /etc/passwd o n eSed 文本流編輯器
sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,sed主要是來進行數據選取,替換,刪除,新增的命令.
[root@localhost ~]# sed --help命令語法:[ sed [選項] [范圍] [動作] 文件名 ]-n #把經過sed命令處理的行輸出到屏幕-e #允許對輸入數據應用多條sed命令編輯-f #從sed腳本中讀入sed操作,和awk命令的-f類似-r #在sed中支持擴展正則表達式-i #用sed的修改結果,寫到文件命令動作:p #打印,輸出指定的行a #追加,在當前行后添加一行或多行i #插入,在當前行前插入一行或多行c #整行替換,用c后面的字符串替換原數據行d #刪除,刪除指定的行s #字串替換,格式:"行范圍s/舊字串/新字串/g"#對sed命令我們要知道的是,它所有的修改都不會直接修改文件的內容,而是在內存中進行處理然后打印到屏幕上 #如果想要寫入文件,請使用 sed -i 選項才會保存到文本中.在進行實驗之前,首先創建一個文件,來做測試用
[root@localhost ~]# cat lyshark.logID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100使用 sed '2p' 重復打印第二行數據
[root@localhost ~]# sed '2p' lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 1 WR 22 m 100 ←本行是2p打印的 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100[root@localhost ~]# sed '3p' lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 2 LC 26 m 90 ←本行是2p打印的 3 LY 23 m 88 4 XDL 40 b 100使用 sed -n 限定,只選取指定的行進行顯示
[root@localhost ~]# sed -n '2p' lyshark.log ←只打印第2行數據 1 WR 22 m 100[root@localhost ~]# sed -n '1p' lyshark.log ←只打印第1行數據 ID NAME AGE Gender Mark使用 sed '2,4d' 刪除掉文件2-4行,并顯示到屏幕,(原文件內容并沒有被修改)
[root@localhost ~]# sed '2,4d' lyshark.log ←刪除2-4行的數據并打印 ID NAME AGE Gender Mark 4 XDL 40 b 100[root@localhost ~]# sed '1d' lyshark.log ←刪除第1行的數據 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100使用 sed '2[a|i]' 追加,或者插入數據指定數據
[root@localhost ~]# sed '2a hello lyshark' lyshark.log ←在第2行后面追加數據 ID NAME AGE Gender Mark 1 WR 22 m 100 hello lyshark 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100[root@localhost ~]# sed '2i hello lyshark' lyshark.log ←在第2行前面插入數據 ID NAME AGE Gender Mark hello lyshark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100使用 \ 換行符,一次插入多行數據
[root@localhost ~]# sed '2a hello \ ←在第二行下面,插入一段話,用\隔開 > my name is lyshark \ > age 22 \ > boy ' lyshark.logID NAME AGE Gender Mark 1 WR 22 m 100 hello my name is lyshark age 22 boy 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100使用 sed 'c' 實現整行替換數據
[root@localhost ~]# cat lyshark.log | sed '5c 5 WRS 99 m 111' ←整行替換第5行內容 ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 5 WRS 99 m 111使用 sed 后面跟上 -i 選項,將第5行的修改,保存進文件,(-i選項是回寫)
[root@localhost ~]# sed -i '5c 5 WRS 99 m 111' lyshark.log[root@localhost ~]# cat lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 5 WRS 99 m 111 ←這里的數據已經寫入成功字符串的替換 sed 's/舊文本/新文本/g' 進行整行替換
[root@localhost ~]# sed '2s/WR/LyShark/g' lyshark.log ←將第2行的,WR替換成LyShark ID NAME AGE Gender Mark 1 LyShark 22 m 100 2 LC 26 m 90 3 LY 23 m 88 5 WRS 99 m 111[root@localhost ~]# sed '3s/LC/Admin/g' lyshark.log ←將第3行的,LC替換成Admin ID NAME AGE Gender Mark 1 WR 22 m 100 2 Admin 26 m 90 3 LY 23 m 88 5 WRS 99 m 111#注意:上方只是替換打印,并沒有保存,如若想保存請加 -i 屬性將第3行數據的開頭添加#注釋
[root@localhost ~]# sed '3s/^/#/g' lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 #2 LC 26 m 90 3 LY 23 m 88 5 WRS 99 m 111將第4和第5行的內容替換成空
[root@localhost ~]# sed -e '4s/LY//g ; 5s/WRS//g' lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 23 m 88 5 99 m 111#sed 要進行多行操作時,只能通過 -e 寫多條操作語句,用 ; 或回車分隔通過使用grep命令定位到指定行,然后使用sed替換無用字符串,最后實現IP地址的過濾.
[root@localhost ~]# ifconfig | grep "inet 192" |sed 's/^.*inet //g' 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255[root@localhost ~]# ifconfig |grep "inet 192" |sed 's/^.*inet //g' |sed 's/ netmask.*$//g' 192.168.1.10[root@localhost ~]# ifconfig | grep "inet6" | head -n 1 | sed 's/^.*inet6 //g' | sed 's/ prefixlen.*$//g' fe80::db97:e754:b016:1686[root@localhost ~]# ifconfig | grep "RX packets" | head -n 1 | sed 's/^.*ets //g' | sed 's/ bytes.*$//g' 97265Awk 文本報告生成器
awk是一種編程語言,用于在Linux下對文本和數據進行處理,數據可以來自標準輸入(stdin),一個或多個文件,或其它命令的輸出,它支持用戶自定義函數和動態正則表達式等先進功能,此處我們只需要了解一些基礎即可.
[root@localhost ~]# awk --help命令語法:[ awk '條件1{動作1} 條件2{動作2} ....' 文件名 ]條件:一般使用關系表達式作為條件x>10 判斷x變量是否大于10x==y 判斷變量x是否等于變量yA ~ B 判斷字符串A中是否包含能匹配B表達式的字符串A!~ B 判斷字符串A中是否不包含能匹配B表達式的字符串在進行實驗之前,首先創建lyshark.log測試文件,后續使用該文件練習過濾.
[root@localhost ~]# cat lyshark.logID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100簡單使用,awk格式化輸出文本的第二列和第三列的內容.
[root@localhost ~]# awk '{ printf $2 "\t" $3 "\n" }' lyshark.log NAME AGE WR 22 LC 26 LY 23 XDL 40指定分隔符,通過使用-F參數可以用于指定一個分隔符.
[root@localhost ~]# awk -F ":" '{printf $1 "\t" $6 "\n"}' /etc/passwd root /root bin /bin daemon /sbin adm /var/admBengin/End關鍵字: BEGIN的執行時機是在awk程序開始過濾之前執行,BEGIN定義的動作只能被執行一次.
[root@localhost ~]# awk 'BEGIN{ printf "執行語句前,執行我 \n" }{ printf $2 "\t" $4 "\n" }' lyshark.log 執行語句前,執行我 NAME Gender WR m LC m LY m XDL b至于END則剛好和BEGIN相反,END是在awk程序處理完所有數據,即將結束時執行,END后的動作只在程序結束時執行一次.
[root@localhost ~]# awk 'END{ printf "執行語句結束后,執行我 \n" }{ printf $2 "\t" $4 "\n" }' lyshark.log NAME Gender WR m LC m LY m XDL b 執行語句結束后,執行我當然了BEGIN與END是可以連用的,以下例子也就是實現了連用的效果.
[root@ ~]# awk 'BEGIN{ printf "執行語句前,先執行我 \n" }END{ printf "執行語句后,在執行我 \n"}{ printf $2 "\t" $4 "\n" }' lyshark.log執行語句前,先執行我 NAME Gender WR m LC m LY m XDL b 執行語句后,在執行我關系運算符: 設定條件,符合執行不符合不執行,下面設定條件為AGE字段>=25歲的列出
[root@localhost ~]# cat lyshark.log | grep -v ID | awk '$3 >=25 {print $1 "\t" $2}' 2 LC 4 XDL[root@localhost ~]# cat lyshark.log |grep -v ID | awk '$2 == "XDL" {print $0}' 4 XDL 40 b 100awk正則匹配: awk是列提取命令,其每次讀入一行,并進行判斷,重復賦值變量,并打印數據.
指定搜索:正則搜索第2列NAME字段,包含XDL的行,并打印出AGE列對應的值.
[root@localhost ~]# cat lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100[root@localhost ~]# awk '$2 ~/XDL/ {printf $3 "\n"}' lyshark.log 40全局搜索:正則全局搜索包含WR的字段行,并打印本行$0全部數據.
[root@localhost ~]# cat lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100[root@localhost ~]# cat lyshark.log | awk '/WR/ {printf $0 "\n"}' 1 WR 22 m 100正則查找相應行:正則全局查找滿足開頭范圍是[0-2]的行,并打印出全部數據.
[root@localhost ~]# cat lyshark.log ID NAME AGE Gender Mark 1 WR 22 m 100 2 LC 26 m 90 3 LY 23 m 88 4 XDL 40 b 100[root@localhost ~]# cat lyshark.log | awk '/^[0-2]/ {print $0}' 1 WR 22 m 100 2 LC 26 m 90awk內置變量: 接下來將來看幾個比較重要的內置變量的使用,以及簡單實現判斷功能
通過內置變量 FS=":" 定義分隔符,打印/etc/passwd文件的第1列和第7列
[root@localhost ~]# cat /etc/passwd |grep "/bin/bash" | awk '{print $0}' root:x:0:0:root:/root:/bin/bash[root@localhost ~]# cat /etc/passwd |grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t" $7 "\n"}' root /bin/bash打印行內容的同時,打印出行號(NR變量),和本行的字段數(NF變量)
[root@localhost ~]# cat /etc/passwd |grep "/bin/bash" | awk 'BEGIN {FS=":"} {print $1 "\t" "行號:" NR "\t"}' root 行號:1[root@localhost ~]# cat /etc/passwd |grep "/bin/bash" | awk 'BEGIN {FS=":"} {print $1 "\t" "字段數:" NF "\t"}' root 字段數:7[root@localhost ~]# cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1 "\t" "記錄數:" FNR "\t"}' root 記錄數:1 bin 記錄數:2 daemon 記錄數:3打印內容的同時,首先判斷 $1==sshd 然后再打印本行的行號等信息
[root@localhost ~]# cat /etc/passwd | awk 'BEGIN{FS=":"}$1=="sshd" {print $0}' sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin簡單判斷功能:將第2行,到第4行,的內容加起來,最后輸出結果相加的結果
[root@localhost ~]# cat lyshark.log ID NAME AGE SEX LINUX 1 LY 18 boy 100 2 SC 30 man 150 3 WR 22 man 90 4 ZSX 55 boy 96[root@localhost ~]# awk 'NR==2{x=$3} NR==3{y=$3} NR==4{z=$3} {totle=x+y+z;print "Totle is:" totle}' lyshark.log Totle is:0 Totle is:18 Totle is:48 Totle is:70 Totle is:70[root@localhost ~]# awk 'NR==2{x=$3} NR==3{y=$3} NR==4{z=$3;totle=x+y+z;print "Totle is:" totle}' lyshark.log Totle is:70簡單判斷功能:統計AGE列,將年齡小于25歲的任過濾出來,并顯示 is young man!
[root@localhost ~]# cat lyshark.log ID NAME AGE SEX LINUX 1 LY 18 boy 10 2 SC 30 man 50 3 WR 22 man 90 4 ZSX 55 boy 96[root@localhost ~]# cat lyshark.log | awk '{if (NR >= 2){if ($3 < 25) printf $2 " IS Young Man! \n"}}' LY IS Young Man! WR IS Young Man!簡單判斷功能:統計LINUX列,當出現大于80分的,打印到屏幕上 is good man!
[root@localhost ~]# cat lyshark.log ID NAME AGE SEX LINUX 1 LY 18 boy 10 2 SC 30 man 50 3 WR 22 man 90 4 ZSX 55 boy 96[root@localhost ~]# cat lyshark.log | awk 'NR>=2 {temp=$5} temp>80 {printf $2 "IS Good Man!\n"}' WRIS Good Man! ZSXIS Good Man!總結
以上是生活随笔為你收集整理的Linux 文本处理三剑客应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存卡写保护问题
- 下一篇: 狠狠拿捏 南京工业大学 智慧南工在线考试