Day08_固化命令、grep、sed及awk命令
阿新 • • 發佈:2017-11-18
記錄 輸出 print option cnblogs 失敗 ron logs -o
一. 固化命令
- shell登陸
- /etc/profile
- /etc/bashrc
- /root/.bashrc
- /root/.bash_profile
- /etc/profile.d/a.sh
- /etc/profile
- 非shell登陸
- /root/.bashrc
- /etc/bashrc
- /etc/profile.d/a.sh
- /root/.bashrc
二. grep及正則表達式
- grep
- -n :顯示行號
- -o :只顯示匹配的內容
- -q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容
- -l :如果匹配成功,則只將文件名打印出來,失敗則不打印,通常-rl一起用,grep -rl ‘root‘ /etc
- -A :如果匹配成功,則將匹配行及其後n行一起打印出來
- -B :如果匹配成功,則將匹配行及其前n行一起打印出來
- -C :如果匹配成功,則將匹配行及其前後n行一起打印出來
- -c :如果匹配成功,則將匹配到的行數打印出來
- -E :等於egrep,擴展
- -i :忽略大小寫
- -v :取反,不匹配
- -w:匹配單詞
- -n :顯示行號
- 正則介紹
- ^ :行首
- $ :行尾
- . :除了換行符以外的任意單個字符
- .*:所有字符
- * :前導字符的零個或多個
- + :前導字符一個或多個
- ? :前導字符零個或一個
- x{m} :x出現m次
- x{m,} :x出現m次至多次(至少m次)
- x{m,n} :出現m次至n次
- []:字符組內的任一字符
- [^]:對字符組內的每個字符取反(不匹配字符組內的每個字符)
- ^[^]:非字符組內的字符開頭的行
- \-:只能放在結尾
- [a-z]:小寫字母
- [A-Z]:大寫字母
- [a-Z]:小寫和大寫字母
- ^ :行首
- 正則表達式與通配符
- 通配符:與命令搭配使用
- 正則表達式:一般用於文本處理
- 通配符:與命令搭配使用
三. Sed及正則表達式
- sed語法
- sed [options] ‘command‘ in_file[s]
- options 部分
- sed -n ‘動作‘ :靜默
- sed -e ‘動作‘ :多個規則
- sed -i ‘動作‘:直接修改讀取內容並寫入
- sed -f ‘動作‘ :將動作寫在一個文件內;
- sed -n ‘動作‘ :靜默
- command 部分
- ‘[地址1,地址2] [函數] [參數(標記)]‘
- 定址的方法 1.數字 2.正則
- 函數
- 增刪改
- a 後插
- c 替換
- i 前插
- d 刪除
- 輸入輸出
- p 打印匹配的行 一般和 -n 參數連用,以屏蔽默認輸出
- r 從文件中讀入
- w 寫入到文件中
- s 字符串替換 s/old/new/[g] (g表示一行全部修改)
- ():保存被匹配的字符 以備反向引用\N時使用 最多9個標簽 標簽順序從左至右
- 增刪改
- ‘[地址1,地址2] [函數] [參數(標記)]‘
- options 部分
- sed [options] ‘command‘ in_file[s]
四.awk及正則表達式
- awk語法:awk [options] ‘commands‘ files
- -F 定義字段分隔符,默認的分隔符是連續的空格或制表符,使用option中的-F參數定義間隔符號
- 用$1,$2,$3等的順序表示files中每行以間隔符號分隔的各列不同域
- NF變量表示當前記錄的字段數
- NR 表示AWK讀入的行數
- 行處理:定址 命令
- 定址方法: 正則,變量,比較和關系運算
- ~ !~:匹配正則或不匹配,正則需要用 /正則/ 包圍住
- 定址方法: 正則,變量,比較和關系運算
- -v 定義變量並賦值 也可以借用次方式從shell變量中引入
- username=root
- awk -v var=$username -F: ‘$1 == var{print $1,NR,NF}‘ /etc/passwd
- username=root
- -F 定義字段分隔符,默認的分隔符是連續的空格或制表符,使用option中的-F參數定義間隔符號
五. 其他命令
- cat 文件 | sort | uniq:文件排序去重
- cut -d分隔符 -fm,n:處理文件以分隔符切割取第m n部分
- du -sh:統計文件大小
- find 路徑 -type f:按照類型查找普通文件
- find 路徑 -name 文件名 :按照名字查找文件
- find 路徑 -size +30M:找出大於30M文件
- find 路徑 -size +10M -size -30M:找出大於10M小於30M的文件
- find / -size +2M -type f -name *.txt
Day08_固化命令、grep、sed及awk命令