sed簡介編程
sed命令主要用於刪除、查找替換編程語言
sed的用法:命令行
sed命令模式:sed [option] 'sed命令' filename sed腳本模式:sed [option] 'sed script' filename
sed選項:3d
-n:只打印匹配到行code
-e:直接在命令行進行編輯,此爲默認的選項blog
-f: 執行指定腳本中的script語句排序
-i:直接修改文件中的內容ip
sed動做說明字符串
a:a的後面能夠是字符串,這些字符串會新增到下一行(目前的下一行)數學
c:取代,c的後面能夠是字符串,這些字符串能夠取代n1,n2之間的行
d:刪除
i:插入,i的後面能夠是字符串,這些字符串會在新的一行出現(目前的上一行)
p:打印,一般p和 -n一塊兒使用
s:替換,進行替換,一般s是搭配正則,例如:s/oo/tt/g(把oo替換爲tt)
示例:
一、使用sed進行匹配
sed -n '/root/'p passwd
二、sed不區分大小寫匹配
sed -n '/root/'Ip passwd
三、刪除1-30(並不會操做文件)
sed '1,30'd passwd |wc -l
四、把第1-5行替換爲「111」
sed '1,5'c'111' passwd
五、指定行數替換
sed '1,10s/oo/xx/g' passwd
六、全局替換
sed '$s/oo/xx/g' passwd
七、把passwd文本以:分割,把第一段和最後一段進行替換
以第一行爲例:
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' passwd |head -n 1
解釋:
-r :使用擴展正則。能夠不使用脫意符
/([^:]+):(.*):([^:]+)/ 以「:」分割爲三段。
第一段([^:]+):,不以:開頭,以:結尾,「+」表示一個或多個字符。對應的輸出結果就是:
第二段(.): (.)貪婪匹配,以「:」結尾。對應的輸出結果是:
第三段([^:]+) 不以「:」開頭,「+」表示一個或多個字符。對應的輸出結果就是:
\1表示第一個()內容,\2表示第二個()內容,\3表示第三個內容
最終的輸出結果:
八、在某行插入字符
在第三行插入‘333’
sed ‘3’i‘333’
awk簡介
一、awk是一種編程語言,用於對文本和數據進行處理的。
二、具備強大的文本格式化能力。
三、利用命令awk,能夠將一些文本整理成爲咱們想要的樣子。
四、命令awk是逐行進行處理的。
awk示例
一、指定分隔符進行分割
awk -F ':' '{print $1}' passwd
-F : 指定分隔符,若是不指定分隔符默認是以空格或者空白行,做爲分割
$1 : 表示打印第一段,若是是$2就是打印第二段
二、多段打印
awk -F ':' '{print $1,$2,$3}' passwd
三、打印所有段
awk -F ':' '{print $0}' passwd
四、awk匹配
awk '/oo/' passwd
awk正則
awk可使用正則,而且自帶脫意功能,不須要像grep -E 和sed -r 進行脫意。
一、匹配包含‘root’或者‘user’的行
awk '/user|root/' passwd
二、以‘:’分割,匹配包含‘root’或者‘user’的行,並多段打印
awk -F ':' '/root|user/ {print $1,$2}' passwd
三、 awk多個匹配,並進行分割
awk -F ':' '/root/ {print $1,$2} /user/ {print $1,$2,$3}' passwd
匹配包含'root'的行,並打印第一第二多段
匹配包含'user'的行,並打印第一,第二,第三段
awk數學運算匹配
一、匹配第三段等於0的
能夠不輸入print也會默認打印。
awk -F ':' '$3==0' passwd
二、匹配第三段大於1000的並指定打印第三段
awk -F ':' '$3>=1000 {print $3}' passwd
注意的是若是數字中使用了""號,會認爲是字符串則會按ascll碼進行排序
三、&&和||
匹配第三段大於1000的行,而且第六段是‘/home/test’的行
awk -F ':' '$3>1000 && $6=="/home/test"' passwd
匹配第三段大於1000的行,或者第六行等於‘/home/test’
awk -F ':' '$3>1000 || $6=="/home/test"' passwd
四、兩個字段進行比較
匹配第三段小於第四段的行
awk -F ':' '$3<$4' passwd
awk內置變量
一、輸出分隔符:OFS
OFS是指定print時用到的分隔符
awk -F ':' '{OFS="#"} $3>=1000 {print $1,$3}' passwd
{OFS="#"}就是在print時以‘#’做爲分隔符
二、NR 顯示行數
awk -F ':' '{print NR": "$0}' passwd
NR也能夠用來作判斷條件
awk -F ':' 'NR>10 {print NR": "$0}' passwd
三、NF:顯示段數
awk -F ':' '{print NF": " $0}' passwd
awk改變值
將第一段所有改成root
awk -F ':' '$1="root"' passwd
賦值後全部的分割符都沒了,能夠再使用OFS加上:
awk -F ':' '{OFS=":"} $1="root"' passwd
awk求和
把第三段的數字加起來,並打印
awk -F ':' '{(tot=tot+$3)};END {print tot}' passwd
{tot=tot+$3}:意思是把第三段的數字循環相加