文本處理三劍客
grep:grep,egrep,fgrep
pattern:模式,類型
sed
awk
通用技術:正則表達式
blank和space的區別:
`[:blank:]' Blank characters: space and tab. ? [:space:]' ? ? ? Space characters: in theC' locale, this is tab, newline, vertical tab, form feed, carriage return, and space.
grep
grep -q 不做任何顯示,但會有一個返回的結果,叫$? grep -nA3 root /etc/passwd root后面的后3行 grep -nB3 root /etc/passwd ? grep -nC3 root /etc/passwd 既包含前3行,也包含后3行 _不算單詞的分隔符,-算單詞的分隔符
Perl非常擅長做正則表達式
元字符分類:字符匹配,匹配次數,位置錨定,分組
man 7 regex
echo abc | grep a.c //.表示一個字符
轉義:加轉義符之后,表示字符原來的含義
echo abcdef | grep "a" echo abcdef | grep "a[xyz]c"
x*表示 *前面的x出現的次數是不確定的
.*表示任意長度的任意字符串
遇到正則表達式寫法最好加上雙引號
*貪婪
+貪婪
\?懶惰模式
在[]里面寫.表示.本身,不需要轉義符
不懂!
[a-z.]
正則表達式匹配IP地址
[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
在學習的時候,方法是不斷更新和改進的
查看硬盤的利用率
df | grep "/dev/sd" | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]"
行首^,寫在最前
行尾$,寫在最后
查看非注釋與非空行
grep -v "^#" /etc/fstab | grep -v "^$" ?
過濾空行 grep -v "^[[:space:]]*$" f1
以root為單詞詞首開始的行
grep "\<root" /etc/passwd // ? 注意 \<
以root為單詞詞尾結束的行
grep "root\>" /etc/passwd
包含以root為單詞的行
grep "\<root\>" /etc/passwd grep -w "root" /etc/passwd
包含wang三次
echo wangwangwang | grep "\(wang\)\{3\}"
做計算機的最忌諱的是重復
分組是重點!
搜尋頭尾相同 grep "^\(.*\):.*/\1$" /etc/passwd
取centos的版本數字
cat /etc/centos-release | grep -o "[[:digit:]].*[[:digit:]]\>"
取文件或者文件夾的基名
echo /etc/rc.d/init.d/ | egrep -o "[^/]*/?$"
sed一般適合大量文件
vi/vim
vim是基于模式的,有ex模式,有insert模式,還有普通/一般模式
:r 將其他文件的輸出追加到當前文件夾
點加空格表示一句
(上一句
)下一句
空行算一個段落
{上一段
}下一段
x–>p 實現了兩個字母的對調位置
J刪除當前行后的換行符
dG 刪除光標之后的所有內容
26個寄存器(a-z)
Shell編程
程序:指令+數據
程序編程風格:
過程式:以指令為中心,數據服務于指令 ? 對象式:以數據為中心,指令服務于數據 ? 大工程一般是面向對象的
shell程序:提供了編程能力,解釋執行
python,java,go
低級:匯編
高級:編譯:高級語言–>編譯器–》目標代碼(Java,C#
? 解釋:高級語言–》解釋器–》機器代碼(Shell,perl,python
shell腳本就是命令的集合,按照自己的次序寫出來
編程邏輯處理方式:
1.順序執行
2.循環執行
3.選擇執行
shell編程:過程式,解釋執行
編程語言的基本結構:
各種系統命令的組合
數據存儲:變量,數組
表達式:a+b
語句:if
shell編程相對而言不是很安全,如果給用戶用,用戶只能使用二進制
給用戶用,編譯性的語言更加安全
shell,perl,python都是源碼,都是文本
shell:各種系統命令的組合
數據存儲:變量,數組
不同shell的語法是不同的
shebang機制:sharp+bang
自動化運維使用shell,建議寫成shell腳本
加bash的時候,即使這個文件沒有可執行權限,依然能夠通過bash命令執行
cat hello.sh | bash bash hello.sh
curl http://192.168.30.128/hello.sh
把一個腳本放在很多人都能夠訪問的主機上,那么這個程序就能夠很容易地被很多人調用
腳本代碼開頭約定:
1.第一行shebang,即使打字也不要使用漢字
2.程序名,避免更改文件名為無法找到正確的shell
3.版本號
4.更改后的時間
…………..
附加知識點:
SUID,SGID,STICKY和token有聯系
ACL可能和token沒有聯系
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95534