awk過濾行
A. awk中把時間過濾出來並判斷是否相等
用awk的內置函數 substr 對$1處理。
時間字元串通常有固定位數(YYYYmmdd)
B. 如何用awk過濾最後一行的
awk 'END{print}' 1.txt
C. 利用awk命令提取其中一列包括特定字元的所有行怎麼辦
awk:用於一行中分成數個「欄位」來處理。適合處理 小型數據。
運行內模式:awk '條件類型容1{動作1} 條件類型2{動作2} ...' filename
# last | awk '{print $1 "\t" $3}' <== 查看登錄者的數據,只顯示登錄名和ip地址,並以[tab]隔開
awk 的內置變數
變數名稱 代表的含義
NF 每一行($0)擁有的欄位總數
NR 當前 awk 所處理的是 「第幾行」 數據
FS 當前分隔符,默認空格鍵
awk 的邏輯運算符
運算單元 代表含義
> 大於
< 小於
>= 大於或等於
<= 小於或等於
== 等於
!= 不等於
範例:
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}' <== 文件/etc/passwd是以":"分隔的,查看第三欄小於10的數據,並且只顯示帳號與第三欄
D. 如何用awk命令對命令行輸出進行過濾
類似如下的命令:
awk -vRS= '/open domain/' urfile | sed '/^Nmap/!d; s/.* //; s/(\|)//g'
E. 利用grep,sed或awk命令如何過濾出test.txt文件中第二列中大於10的數
awk '{if(NR==n) $n=新數據;print $0}'
面命令n行數列數
的交線……) 空間有幾種距離?如何求距離?點與點,點與線
F. 如果awk處理得到兩行 如何只輸出一行例如awk 'if(nf<5)print $0'會得到兩行
參考下面的命令,可以在awk命令後通過 | 命令+tail 、head、grep組合來達到你要的效果
---------------------------------------------------
參考下cat、tail、head、tee:文件列印命令
這些命令的語法基本上相同的:命令名 [選項] [文件],而且您可以在管道中使用這些命令。這些命令的功能都是根據特定的條件選擇文件內容進行列印。
cat 工具會將文件的全部內容列印到標准輸出。
這是最常用的命令之一。例如,您可以使用:
# cat /var/log/mail/info
將郵件程序守護程序日誌的內容列印到標准輸出[14]。
cat 命令有一個非常有用的選項(-n),該選項將允許您列印行號。
某些文件,如守護程序日誌文件(如果相應的守護程序運行了的話)可能非常大[15],在屏幕上列印全部內容可能沒什麼必要。
您經常只是需要看看一個文件的某幾行。
您可以使用 tail 命令完成這一功能。默認情況下,下面的命令將會列印 /var/log/mail/info 文件的最後十行:
# tail /var/log/mail/info
您可以使用 -n 選項顯示文件的最後 N 行。例如,要顯示最後兩行,您應該執行:
# tail -n2 /var/log/mail/info
而 head 命令與 tail 十分相似,只是列印文件的頭幾行。默認情況下,下面的命令將會列印 /var/log/mail/info 文件的頭十行:
# head /var/log/mail/info
和 tail 一樣,您也可以使用 -n 選項指定要列印的行數。例如,要列印前兩行,您應該執行:
# head -n2 /var/log/mail/info
您還可以組合使用這幾條命令。
例如,如果您想要只顯示第九行和第十行,您可以先使用 head 命令選擇文件的前十行,然後再將結果通過管道送到 tail 命令。
# head /var/log/mail/info | tail -n2
豎線後面的部分將選擇最後兩行,然後將其列印到屏幕。同樣地,您也可以選擇只列印文件的倒數第 20 行:
# tail -n20 /var/log/mail/info |head -n1
在本例中,我們讓 tail 選擇了文件的最後 20 行,然後將結果通過管道傳送給 head。然後 head 命令將會從得到的數據中取出第一行列印到屏幕上。
現在我們假定您想要將上例中的結果在屏幕上顯示的同時還保存到文件 results.txt。
tee 工具可以幫到我們。其語法是:
tee [選項] [文件]
現在,我們可以將上一命令做如下更改:
# tail -n20 /var/log/mail/info |head -n1|tee results.txt
我們再來舉一個例子。我們想要選擇最後 20 行,將其保存到 results.txt,但是只在屏幕上顯示這 20 行中的第一行。那麼,我們應該輸入:
# tail -n20 /var/log/mail/info |tee results.txt |head -n1
tee 命令有一個非常有用的選項(-a),它允許您將數據追加到已有文件。
讓我們再回過頭來看看 tail 命令。像日誌這樣的文件應該是在不斷變化的,因為與其相關的守護程序每時每刻都在記錄著它所執行的動作和發生的事件。所以,如果您想要交互地觀看日誌文件,您可以使用 -f 選項:
# tail -f /var/log/mail/info
在本例中,/var/log/mail/info 文件的所有更改都會立即列印到屏幕上。當您想要知道您系統的工作原理時,使用帶 -f 選項的 tail 命令將非常有用。例如,通過查看 /var/log/messages 日誌文件,您可以時刻跟蹤系統信息和各種守護程序。
在下一節中,我們將會看到如何將 grep 用作過濾器,以便從來自其它服務的信息中拆出 Postfix 信息。
grep: 定位文件中的字元串
不管是命令的名字還是縮寫(「General Regular Expression Parser」)都顯得非常古怪,但該命令的作用和用法卻很簡單:grep 將在一個或多個文件中查找給定的模式。其語法為:
grep [選項] <模式> [一個或多個文件]
如果列出了多個文件,將會在每一行結果的開頭附加相應的文件名。使用 -h 選項可以不顯示這些文件名;使用 -l 選項可以只列出文件名。模式是一個正則表達式,盡管在大多數情況下只是一個簡單的單詞。下面列出了最常用的幾個選項:
-i:進行不區分大小寫的搜索;
-v:反轉搜索。顯示不與模式匹配的行;
-n:顯示找到行的行號;
-w:讓 grep 在進行模式匹配時匹配整個單詞。
G. 使用awk如何過濾html標簽
^這個太復雜了
需要具體的內容
比如回:
$ cat urfile
<body leftmargin="0" topmargin="5" onkeydown="if(event.keyCode>27) return false;">a>abcd<body>
<body leftmargin="0" topmargin="5" onkeydown="">
<body leftmargin="0" topmargin="5" onkeydown="if(event.keyCode<27) return false;">asdf<table><tr><td>asdf</td></tr></table>
<body leftmargin="0" topmargin="5" onkeydown="if(event.keyCode<>27) return false;">asdf<table><tr><td>asdf</td></tr></table>
$ sed -r ':a;s/(=")([^答"]*)[><]+([^"]*")/\1\2\3/;ta;s/<[^>]*>//g' urfile
a>abcd
asdfasdf
asdfasdf
H. 怎麼使用awk,grep,sed 把如下的三個東西過濾出來
root@回localhost:~答#cat1
commit3741acc78624
Author:abc.zhang
Date:balabala
[ID00965432]CM/BRDgoogleissues.
root@localhost:~#awk'/commit/{print$2}'1
3741acc78624
root@localhost:~#awk'/Author/{print$2}'1
abc.zhang
root@localhost:~#awk-F"[\[\]]"'/ID00/{print$2}'1
ID00965432
I. awk怎麼過濾豎線分開的日誌的列
設置欄位分隔符FS就可以了;如果要輸出欄位也按豎線分隔,那麼再設置OFS也為豎線。專
給個例子吧:屬
echo"a|b|c|d"|awk'BEGIN{FS=OFS="|"}{print$2,$3}'
結果得到:b|c
J. awk 條件過濾
sed -i 's/^.*CST.*$//g' file #把時來間刪掉
awk '{sub(/.*CST.*/,"")};1' file #awk的
後邊源那句:
其他的輸出不一定有規律,也不一定是總和為:組播為什麼等
我沒聽懂說的什麼意思。