cut:顯示切割的行資料
-f: 選擇顯示的列
-s: 不顯示沒有分隔符的行
-d:自定義分隔符
sort:排序檔案的行
-n: 按數值排序
-r:倒序
-t:自定義分隔符
-k:選擇排序列
-u:合併相同行
-f:忽略大小寫
wc:統計單詞,word count
sed:行編輯器 --(vi:全屏編輯器)
sed [options] 'Address Command' file ...
[options]
-n 靜默模式,不再預設顯示模式空間中的內容
-i 直接修改原檔案
-e SCRIPT 可以同時執行多個指令碼
-f /PATH/TO/SED_SCRIPT
-r 表示使用擴充套件正規表示式
Command
d 刪除符合條件的行
p 複製符合條件的行
a \string 在指定的行後面追加新行,內容為string。\n可以用於換行
i \string 在指定的行前面新增新行,內容為string。
r FILE 將指定的檔案的內容新增至符合條件的行處
w FILE 將地址指定的範圍內的行另存至指定的檔案中
s/pattern/string/修飾符 查詢並替換,預設只替換每行中第一次被模式匹配到的字串
g:行內全域性替換
i:忽略字元大小寫
s///:s###,s@@@
\(\),\1,\2
Address
可以沒有
給定範圍
查詢指定行/str/
num=88
sed "s/\(IPADDR=\(\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\).*/\1$num/" -i ifcfg-eth0
awk文字分析工具
awk是一個強大的文字分析工具。
相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。
簡單來說awk就是把檔案逐行的讀入,空格,製表符為預設分隔符,將每行切片,切開的部分再進行各種分析處理。
awk -F'{pattern+action}' {filenames}
支援自定義分隔符
支援正規表示式匹配
支援自定義變數,陣列 a[1] a[Tom] map(key)
支援內建變數
》》ARGC 命令列引數個數
》》ARGV 命令列引數排列
》》ENVIRON 支援佇列中系統環境變數的使用
》》FILENAME awk瀏覽的檔名字
》》FNR 瀏覽檔案的記錄數
》》FS 設定輸入域分隔符,等價於命令列 -F選項
》》NF 瀏覽記錄的域的個數
》》NR 已讀的記錄數
》》OFS 輸出域分隔符
》》ORS 輸出記錄分隔符
》》RS 控制記錄分隔符
支援函式
print split substr sub gsub
支援流程控制語句,類C語言
if while do/while for break continue
只是顯示/etc/passwd的賬戶:(可以使用cut)
awk -F':' '{print $1 }' passwd
只是顯示 etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以製表符分割,而且在所有行開始前新增列明name shell,在最後一行新增“blue /bin/nosh” (可以使用cut,sed)
awk -F':' '{print $1 "\t" $7}' passwd
awk -F':' 'BEGIN{ print "name\tshell"}{print $1 "\t" $7}END{print "blue\t/bin/nosh"}' passwd
搜尋/etc/passwd有root關鍵字的所有行
awk '/root/ {print $0}' passwd
統計/etc/passwd檔案中,每行的行號,每行的列數,對應的完整行內容
awk -F':' '{print NR "\t" NF "\t" $0}' passwd
Tom 0 2012-12-11 car 3000
John 1 2013-01-13 bike 1000
vivi 1 2013-01-18 car 2800
Tom 0 2013-01-20 car 2500
John 1 2013-01-28 bike 3500