grep [選項] 『模式』 檔案
選項:
-o:僅顯示匹配到的行
-v:僅顯示未匹配到的行
-q:靜默模式,不輸出資訊
-i:忽略大小寫匹配
-a #:多匹配後#行
-b #:多匹配前#行
-c #:多匹配前後#行
-e:使用擴充套件正規表示式
--color=auto:匹配到的內容自動著色
模式:
單個字元匹配:
.:單個任意字元
:範圍內的字元,如[a-z],[0-9]等
[^]:取反
常用字符集:[:digit:],[:lower:],[:alpha:],[:upper:],[:space:],[:alnum:]
匹配次數:
\*:匹配前面字元任意次
.*:任意長度的任意字元
\?:匹配前面字元0或1次
\+:匹配前面字元至少一次
\:匹配前面字元n次
\:匹配前面字元至少n次,最多m次
\:匹配前面字元最少n次
位置錨定:
^:行首
$:行尾
\<:詞首
\>:詞尾
分組: \(\):將匹配條件寫在括號內,後可以使用\1,\2引用
檔案:可跟檔名或使用管道符作為標準輸入
例子:匹配1-255之間的數字
# ifconfig | grep -o --color=auto '\<\([1-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\>'
擴充套件正規表示式:
egrep [選項] 『模式』 引數
與標準正規表示式相比,除詞首詞尾錨定外,均不需要 \ 轉譯,但仍然使用 \# 來引用前面第#個( )內匹配到的內容。
上面例子使用擴充套件正規表示式如下
ifconfig | egrep -o --color=auto '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
行編輯器,從檔案或標準輸入逐行讀取內容到模式空間,根據命令對此作出相應處理。另外還有保持空間可以提供乙個緩衝區,可利用此緩衝區與模式空間結合使用進行更高階的控制。
sed [選項] 『指令碼』 檔案
選項:
-n:不輸出資訊至螢幕
-r:支援擴充套件正規表示式
指令碼:『addresscommand』
#:特定某一行
/pattern/:被模式匹配到的所有行
#,#:從某一行到某一行
/pat1/,/pat2/:從第一次被pat1匹配到的行到之後第一次被pat2匹配到的行
#,+#:從某行到後面的幾行
1~2:步進,從1行開始,每兩行讀取一次
注:靈活組合使用,不僅限於此
命令: d:刪除
p:顯示模式空間中的行
a \string:在行後追加行,支援\n多行追加
i \string:在行前插入行,支援\n
w /path:模式空間的行寫入檔案
r /path:將檔案讀入到模式空間的行後
!:取反條件
s///:查詢替換,支援g,p,w /path
=:列印行號
g:從保持空間讀取內容覆蓋至模式空間
g:從保持空間讀取內容追加至模式空間
h:模式空間內容覆蓋至保持空間
h:模式空間內容追加至保持空間中
x:模式空間與保持空間內容互換
d:刪除多行模式空間中的所有行
例子:
sed -n 'n;p' /etc/passwd #顯示偶數行
sed -n '1!g;h;$p' /etc/passwd #逆序列印文字內容
sed '$!n;$!d' #取出最後兩行
gawk [選項] 『程式』 檔案
選項:
-v:定義變數或內建變數賦值
-f ' ':指定輸入分隔符,等同於-v fs=' '
內建變數:
fs:輸入分隔符變數,預設為空格
ofs:輸出分隔符變數,預設為空格
rs:輸入換行符
ors:輸出換行符
nf:字段數量
nr:行號,多檔案時一併統計
fnr:行號,多檔案時分別統計
filename:當前檔名
argc:命令引數個數
ar**:命令引數陣列
begin:文字處理之前執行裡的**
end:文字處理完成之後執行裡的**
/pattern/:僅對匹配到的行執行裡的**
/pattern1/,/pattern2/:對第一次被pattern1匹配到的行至之後第一次被pattern2匹配到的行之間所有行執行裡的**
程式: #引用字段使用$1 ,$2等,引用變數不需$
print nf #列印當前行欄位數量
print $nf #列印當前行最後字段
#參考c語言printf函式用法,支援 %-10s,%3.1f 這類用法
#參考c語言用法,相當於if語句
對於陣列:使用for(varname in arrayname),使變數遍歷陣列所有元素下標進行操作
關聯陣列:使用字串索引陣列元素。如 array["str"]=1,可利用此特性統計字串、數值等值重複次數
算術運算:+,-,*,/,%,^,++,--
賦值運算:=,+=,-=,*=,/= 等
數值比較:>,>=,==,<,<=
迴圈支援 break 與 continue,另外,使用 next 提前結束當前行進入下一行操作
常用函式:length(strname),返回字串長度;
split(strname, arrayname, r),以r為分隔符分割字串strname並儲存結果至arrayname陣列
例子:統計ss -tan命令顯示結果中各種狀態出現的次數
ss -tan | gawk 'begin ;count[$1]++} end }'
API之NSDictionary的常見用法
nsdictionary dic1 nsdictionary alloc initwithobjectsandkeys 李四 name 不明 gender nil 字典中的物件可以重複儲存 71 instancetype initwithobjectsandkeys id firstobject,n...
遞迴演算法常見用例
1.遞迴逆序列印字串 void reverse char s 2.遞迴方式將鍊錶逆序 p 為指向非空單鏈表中第乙個結點的指標,本演算法逆轉鍊錶並返回逆轉後的頭指標。基本思路是 如果鍊錶中只有乙個結點,則空操作,否則先逆轉a2開始的鍊錶,然後將 a1聯接到逆轉後的鍊錶的表尾 即a2 之後。linkli...
numpy和pandas 各種比較常見的用法總結
經常會遇到np.reshape a,1 或者np.reshape 1,a 這樣的情況 a 1,2,3,4,5 1是乙個比較神奇的功能,意思是我只要確定需要分成a行後者a列,剩下的資料你隨便分,反正結果都一樣。例 arr np.array 1,2,3,4,5,6,7,8,9,10,11,12 乙個一維...