日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux三剑客与管道及正则

發布時間:2024/3/24 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux三剑客与管道及正则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux常用工具:

? ? ? ? 1.正則:正則表達式是記錄文本規則的代碼。??在線正則表達式測試

? ? ? ? 2.管道符“|”,用于連接兩個命令間的輸出與輸入,管道符“|”左邊的命令的輸出會作為管道符“|”右邊命令的輸入。

? ? ? ? ?echo "hello world" | grep hello

? ? ? ? 3.grep,sed,awk為三劍客,對文本進行處理。

? ? ? ? ? ? ? ? 1).grep? 根據用戶指定的模式(pattern)對目標文本進行過濾,顯示被匹配到的行。

? ? ? ? ? ? ? ? ? ? ? ? -v? 顯示不被pattern匹配的行---》grep -nv root test.txt:文件中不包含root的行數

? ? ? ? ? ? ? ? ? ? ? ? -i? 忽略字符大小寫

? ? ? ? ? ? ? ? ? ? ? ? -n? 顯示匹配的行號------》grep -n root test.txt:查找文件中包含root的行數

? ? ? ? ? ? ? ? ? ? ? ? -c? 統計匹配的行數

? ? ? ? ? ? ? ? ? ? ? ? -r 遞歸搜索

? ? ? ? ? ? ? ? ? ? ? ? -o? 僅顯示匹配到的字符串

? ? ? ? ? ? ? ? ? ? ? ? -E? 使用grep -E,相當于egrep,在使用正則匹配時用到此參數:grep -E "w{3}" test.sh

? ? ? ? ? ? ? ? ? ? ? ? 查找以R開始,以\結尾的行

? ? ? ? ? ? 判斷當前用戶在文件中是否存在,存在就打印exist,不存在打印 not exist

? ? ? /dev/null? :linux中的垃圾箱位置? ? ? ? ? ? ?

????????將未報錯的輸出扔進垃圾箱:>> /dev/null

? ? ? ? ?不管報錯與否都扔進垃圾箱:&> /dev/null

? ? ? ? ? ? ? ? 2).sed? ?流編輯器,對文件逐行處理

? ? ? ? ? ? ? ? 2種形式:? ? ? ? sed opcf

? ? ? ? ? ? ? ? ? ? ? ?1. sed [OPTION] “pattern command" file

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如:?sed -n "2 p" passwd

? ? ? ? ? ? ? ? ? ? ? ? OPTION:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -n? ? ? ? 只打印模式匹配的行

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -f? ? ? ? 加載存放“動作”的文件

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -r? ? ? ? 支持拓展正則

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -i? ? ? ? 直接修改文件(真正修改生效的)

? ? ? ? ? ? ? ? ? ? ? ? pattern:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5? ? ? ? 只處理第5行

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5,10? ? ? ? 只處理第5行到第10行

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /parttern/? ? ?只處理能匹配pattern的行

????????????????????????????????/parttern1/,/pattern2/? ? ?只處理能匹配pattern1行到pattern2行的行

? ? ? ? ? ? ? ? ? ? ? ? command(增刪改查):? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? 新增

????????????????????????????????a? ?在匹配行后新增? ? sed -n?'4a i love you'? passwd

????????????????????????????????????????????????????????????????????????在第四行后面新增一行i love you;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i? ? 在匹配行前新增? ?sed -n?'4i I?love you'? passwd?

????????????????????????????????????????????????????????????????????????在第四行前面插入一行I love you;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? r? ?外部文件讀入,行后新增

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w??匹配行寫入外部文件

? ? ? ? ? ? ? ? ? ? ? ? 刪除

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d???sed -n?'2,5d'? passwd? 將第2~5行刪除;

? ? ? ? ? ? ? ? ? ? ? ? 修改

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c? ?整行替換??sed -n?'2,5c i love you'? ?將第2至第5行的數據以i love you替換;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s??詞替換??sed -n?'s/old_word/new_word/g'? ?passwd?

????????????????????????????????????????????????????????????????????????將全局的old_word替換為new_word.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sed -n?'s/old/new/'? ? ? ? 只修改匹配行中第一個old為new

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sed? -n?'s/old/new/ig.? ?忽略大小寫全部替換

? ? ? ? ? ? ? ? ? ? ? ? 查詢

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p??打印? ? sed -n '/root/ p' passwd

? ? ? ? ? ? ? ? ? ? ? ? 示例:

? ? ? ?sed -n "2 p" passwd:對匹配的行做打印操作

? ? ? ?匹配含有daemon的行: sed -n "/daemon/? p" passwd? ---->/xxxword/ 單詞用//包裹

? ? ? ?匹配打印mail開頭到ntp開頭的行:sed -n "/^mail/,/^ntp/ p" passwd?

? ? ? ? ? ? ? ? ? ? ? ?2. some command | sed?sed [OPTION] “pattern command" file

? ? ? ? ? ? ? ? ? ? ? ? sed -h? 幫助文檔? ?向下翻:j

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 向上翻:k

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下一個關鍵字:n

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 上一個關鍵字:N

? ? ? ? ? ? ? ? ? ? ? ? sed -i?'s/old_word/new_word/g' test.txt? 以修改文件內容的形式將

????????????????????????????????????????????????????????文件內全局的old_word替換為new_word.

? ? ? ? ? ? ? ? ? ? ? ? a:新增? ? sed -e '4a i love you'? 在第四行后面新增一行i love you;

? ? ? ? ? ? ? ? ? ? ? ? c.取代? ? sed -e '2,5c i love you'? ?將第2至第5行的數據以i love you替換;

? ? ? ? ? ? ? ? ? ? ? ? d.刪除? ? sed -e '2,5d'? ? 將第2~5行刪除;

? ? ? ? ? ? ? ? ? ? ? ? i:插入修改? ? ?sed -e '4i I?love you'? ?在第四行前面插入一行I love you;?

? ? ? ? ? ? ? ? ? ? ? ? p:打印? ? sed -n '/root/p'

? ? ? ? ? ? ? ? ? ? ? ? s:取代? ? ?sed -e 's/old_word/new_word/g'? ?將全局的old_word替換為new_word.

? ? ? ? ? ? ? ? 3).awk :文本處理工具,處理數據并生成結果報告,對列進行處理。

????????????????把文件逐行讀入,以空格為默認分隔符將每行切片,切開的部分再進行后續處理

? ? ? ? ? ? ? ? 2種形式: awk opcf

? ? ? ? ? ? ? ? ? ? ? ? awk 'BEGIN{} pattern{commands} END{}'?file

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 包裹pattern的必須是單引號‘ ’

? ? ? ? ? ? ? ? ? ? ? ? some command | grep [option] [pattern]

? ? ? ? ? ? ? ? awk 'pattern {action}' test.txt

? ? ? ? ? ? ? ? ? ? ? ? pattern? 正則表達式

? ? ? ? ? ? ? ? ? ? ? ? action? ?對匹配到的內容需要執行的命令(默認為輸出每行內容)

? ? ? ? ? ? ? ? ? ? ? ? test.txt? ?awk瀏覽的文件名

? ? ? ? ? ? ? ? ? ? ? ? BEGIN? 處理文本前要執行的操作

? ? ? ? ? ? ? ? ? ? ? ? END? ? 處理文本后要執行的操作

? ? ? ? ? ? ? ? 內置變量

????????????????????????$0? ??????????????????????????????????????????????整行內容

? ? ? ? ? ? ? ? ? ? ? ? ?$1~$n? ?????????????????????????????????????當前行的第1~n個字段

????????????????????????NF(Number Field)? ????????????????????當前行字段數

????????????????????????NR(Number Row)? ? ? ? ? ? ? ? ? ? ? ?當前行行號,從1開始

? ? ? ? ? ? ? ? ? ? ? ? FS(Field Separator) /-F? ? ? ? ? ? ? 輸入字段分割符,默認為空格/tab鍵

? ? ? ? ? ? ? ? ? ? ? ? RS(Row Separator)? ? ????????????????輸入行分割符,默認為回車符

? ? ? ? ? ? ? ? ? ? ? ? OFS(Output Field Separator).? ?輸出字段分割符,默認為空格

? ? ? ? ? ? ? ? ? ? ? ? ORS(Output Field Separator).? ?輸出行分割符,默認為回車符? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? awk -F: '/root/ {print $7}' /etc/passwd

? ? ? ? ? ? ? ? ? ? ? ? 1.awk 按行處理/etc/passwd文件中的每行數據;

? ? ? ? ? ? ? ? ? ? ? ? 2.將讀取出的每行數據按“:”分割成域;

? ? ? ? ? ? ? ? ? ? ? ? 3.將每行經分割后的所有數據匹配正則/root/,匹配包含root的行;

? ? ? ? ? ? ? ? ? ? ? ? 4.將匹配到的行執行print $7操作,即打印第7域(列),得出最后數據。

? ? ? ? ? ? ?awk -F: 'NR==2{print $0}' /etc/passwd

? ? ? ? ? ? ? ? ? ? ? ? 1.awk 按行讀取passwd文件中所有數據;

? ? ? ? ? ? ? ? ? ? ? ? 2.讀取的數據按“:”分割為域;

? ? ? ? ? ? ? ? ? ? ? ? 3.匹配NR==2,第二行數據,并打印整行所有數據print $0.

awk -F: 'BEGIN{print "i love you"} {print $6,$7} END{print "do you love me?"}' ?/etc/passwd

????????????????????????BEGIN? 處理文本前要執行的操作

????????????????????????END? ? 處理文本后要執行的操作

根據pid查看某進程所占用內存%MEM百分比?

awk 操作passwd文件:

?$0? ?整行內容

awk 查看文件內容?awk '{print $0}' passwd

?$1~$n? ? ?當前行的第1~n個字段

NF(Number Field)? 當前行字段數

NR(Number Row)? ? ?當前行行號,從1開始

FS(Field Separator)? ?輸入字段分割符,默認為空格/tab鍵

????????????????利用NF取出最后一列數據

?????????????????打印第1個字段和最后一個字段

????????????????RS(Row Separator)? ? 輸入行分割符,默認為回車符

????????????????OFS(Output Field Separator).? ?輸出字段分割符,默認為空格

????????????????ORS(Output Field Separator).? ?輸出行分割符,默認為回車符

格式化輸出:printf 會將空格和回車鍵都去除

? ? ? ? 格式符:? ? ? ? ? ? ? ? 含義

? ? ? ? ? ? ? ? %s? ? ? ? ? ? ? ?字符串

? ? ? ? ? ? ? ? %d? ? ? ? ? ? ? ?十進制數字

? ? ? ? ? ? ? ? %f? ? ? ? ? ? ? ? 浮點數

? ? ? ? 修飾符? ? ? ? ? ? ? ? ? 含義

? ? ? ? ? ? ? ? +? ? ? ? ? ? ? ? ?右對齊

? ? ? ? ? ? ? ? -? ? ? ? ? ? ? ? ?左對齊

?格式化:\n換行

? ? ? ? ? ? ? ? /t 指標符

? ? ? ? ? ? ? ? ?%40s 占40個字符,默認右對齊,未占用的用空格代替

? ? ? ? ? ? ? ? ?左對齊????????

?打印包含“chuntian"的行的第1列和最后1列數據

打印mail 到 games的行

需求:取出第6列中含bin的行?

使用正則匹配包含/bin的行

?使用正則匹配第6列包含/bin的行

匹配行后打印總共有幾行

AWK 語法:

????????將awk命令寫入文件,通過文件載入命令

????????vim test.awk. 建議按照此格式寫,不然可能報錯。

BEGIN{FS=":"printf "%-20s\t%-20s\n","User","Status" }{if ($6 ~ "bin"){count++printf "%-20s\t%-20s\n",$1,$NF} }END{printf "%-20s\t%-20s\n","Total:",count }

效果:

通過awk -f 參數加載命令文件。?

awk 語法2:

? ? ? ? 統計每個用戶的 數量

BEGIN{FS=":"printf "%-20s\t%-20s\n","User","Total" }{USER[$1] += 1 }END{for (u in USER)printf "%-20s\t%-20s\n",u,USER[u] }

效果:

?統計日志中每位用戶成功數和失敗數

BEGIN{FS=":"printf "%-20s\t%-20s\t%-20s\n","User","Success","Fail" }{if ($5 == "pass"){SUCCESS[$4] += 1} else{FAIL[$4] += 1}USER[$1] += 1 }END{for (u in USER){ALL_SUCCESS += SUCCESS[u]ALL_FAIL += FAIL[u]printf "%-20s\t%-20s\t%-20s\n",u,SUCCESS[u],FAIL[u]}printf "%-20s\t%-20s\t%-20s\n","Total",ALL_SUCCESS],ALL_FAIL }

?效果:

總結

以上是生活随笔為你收集整理的Linux三剑客与管道及正则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。