一互订、管道
1、什么是管道
- linux提供管道符“|”將兩個命令隔開溃卡,管道符左邊命令的輸出就會作為管道符右邊命令的輸入
2西疤、 例子
- echo "hello123"|grep "hello"
二烂翰、正則
1夯缺、什么是正則
2、正則的用法
代碼 |
說明 |
. |
匹配除換行符以外的任意字符 |
\w |
匹配字母或數(shù)字或下劃線或漢字 |
\s |
匹配任意的空白符 |
\d |
匹配數(shù)字 |
\b |
匹配單詞的開始或結束 |
^ |
匹配字符串的開始 |
$ |
匹配字符串的結束 |
代碼/語法 |
說明 |
* |
重復零次或更多次 |
+ |
重復一次或更多次 |
? |
重復零次或一次 |
{n} |
重復n次 |
{n,} |
重復n次或更多次 |
{n,m} |
重復n到m次 |
三甘耿、grep
1踊兜、grep定義
- 根據(jù)用戶指定的模式(pattern)對目標文本進行過濾,顯示被模式匹配到的行
2佳恬、命令形式
- grep[OPTIONS]PATTERN[FILE...]
3捏境、選項
符號 |
說明 |
-v |
顯示不被pattern匹配到的行 |
-i |
忽略字符大小寫 |
-n |
顯示匹配的行號 |
-c |
統(tǒng)計匹配的行數(shù) |
-o |
僅顯示匹配到的字符串 |
-E |
使用ERE,相當于egerp |
四毁葱、sed
1垫言、定義
2倾剿、命令
- sed[-hn..][-e<script>][-f<script文件>][文本文件]
- -h 顯示幫助
- -n 僅顯示script處理后的結果
- -e<script> 以選項中指定的sceipt來處理輸入的文本文件
- -f<script文件>以選項中指定的script文件來處理輸入的文本文件
3筷频、常用動作
符號/說明 |
例子 |
a:新增 |
sed -e '4 a newline' |
c:取代 |
sed -e '2,5c NO 2-5 number' |
d:刪除 |
sed -e '2,5d' |
i:插入 |
sed -e '2i hello' |
p:打印 |
sed -n '/root/p' |
s:取代 |
sed -e 's/old/new/g |
4、實戰(zhàn)
sed '2a newline' test.txt
sed '2i newline' test.txt
sed -e 's/root/hello/g' test.txt
sed -i 's/root/hello/g' test.txt
五柱告、awk
1截驮、定義
- 把文件逐行的讀入笑陈,以空格為默認分隔符將每行切片际度,切開的部分再進行后續(xù)處理
2、命令形式
- awk 'pattern + action'[FILE]
3涵妥、命令解析
- awk 'pattern + action'[FILE]
- -pattern 正則表達式
- -action 對匹配到到內容執(zhí)行的命令(默認為輸入每行內容)
4乖菱、常用參數(shù)
符號 |
說明 |
FILENAME |
awk瀏覽的文件名 |
BEGIN |
處理文本之前要執(zhí)行的操作 |
END |
處理文本之后要執(zhí)行的操作 |
FS |
設置輸入域分隔符(列數(shù)) |
NR |
已讀的記錄數(shù)(行數(shù)) |
OFS |
輸出域分隔符 |
ORS |
輸出記錄分隔符 |
RS |
控制記錄分隔符 |
$0 |
整條記錄 |
$1 |
表示當前行的第一個或...以此類推x |
5、實戰(zhàn)
- 搜索/etc/passwd有root關鍵字的所有行蓬网,并顯示對應的shell
awk -F:'/root{print $7}'/etc/passwd
awk -F:'NR==2{print $0}'/etc/passwd
awk 'BEGIN{print "BEGIN","BEGIN"}{print$1,$2 }'/etc/passwd
echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'