sed awk 例項分享

2021-09-11 01:52:16 字數 2137 閱讀 9958

介紹

做運維的應該經常用sed和awk等這些工具,但要想把他們用得好絕非易事,需要長時間的積累,

正文1 如何在shell中獲取字串string的長度

echo $
2 替換檔案text中乙個或多個空格

sed -i "s/ \+/||/g" test
注釋:\+意思是之前字元的乙個或多個

3 刪除檔案text中「[」和「]」兩個字元

sed -i -e "s/\[//g" -e "s/\]//g" text
4 刪除noauto關鍵字和找到匹配行然後替換

sed -i -e 's/,noauto//g'  -e  '/hadoop/s/\s*$/0/g' /etc/fstab
4 文字text的每一列以逗號分隔,現在要刪除第六列,然後輸出其他列,每一列以空格分隔

awk 'begin'
5 輸出每個使用者所占用的cpu百分比

top -bn 1 | awk '' | awk 'end' | sort -nr
6 統計nginx的access.log中每個url的訪問數和流量,輸出前10名

awk '' access_2010-12-8.log|awk 'end'|sort -rn|head -10
7 for迴圈輸出連續字串

for i in hadoop ; do echo $i ; done
8 寫awk指令碼來獲取每行中匹配正規表示式的字段

text.awk

begin  

}}end

執行

awk -f text.awk text
9 返回匹配的字串

for i in $(cat text) ; do ls dir/ | grep $i > /dev/null ; if [ $? -ne 0 ] ; then  echo $i ;fi ; done
根據返回值:$?是否為0,判斷是否輸出字串。

10 獲取磁碟裝置名與label之間的對應關係

for i in $(fdisk -l | grep "disk /dev/sd" | awk '' | awk -f ":" '')  ; do echo $i "---" $(e2label $1); done
11 合併雙數行到奇數行

awk 'nr%2' file.txt
nr%2表示的意思是行數不能被2整除的行,是條件語句。

printf是定義輸出格式

next表示下一行

print表示輸出所有行,不管是否是奇數行

上面的命令還可以這樣寫:

awk 'nr%21' file.txt
1表示始終為真的意思,也就是輸出所有行。

若用sed上面的命令可以這樣寫:

sed 'n;s/\n/ /' file.txt
n表示的是整合每兩行為一行。

12 利用awk進行行過濾,並得到硬碟空間最小的碟符

awk '!/^major/ && !/^$/ && ($4 !~ /[a-z]*[0-9]/) ' /proc/partitions | awk 'begin ; };

end '

這行命令先排除掉以major開頭的行,再排除空行,最後排除以數字結尾的行,之後再迴圈得到硬碟空間最小的碟符。

13 if語句裡面有多個條件

for i in $(awk '' /proc/partitions) ; do parted -s /dev/$i rm 1 ; done 

14 根據hadoop的namenode的jsp的jmx頁面的資料,統計每個rack對應的硬碟使用情況

先把第二列過濾下,獲取前三個字段

awk '' file

再根據第二列,統計最後一列的值並求和

awk ' end ' file | sort -r -k 2

sed,awk簡單使用

sed是一種非互動式的流編輯器,可動態編輯檔案。sed的工作模式是對比每一資料行,若如何樣式,就執行指定的操作。語法格式 sed 樣式命令 檔案 如果檔案中某一行符合 樣式命令 就執行指定的sed命令,如刪除 d 替換 s 輸出 p 這裡的 樣式命令 使用一對 括起來,表示尋找。例如 1 1,6 表...

sed awk擷取日誌

awk 字串1 a file sed n 字串1 n b2 file awk 字串1 a file sed n 字串1 m x lzj p b x file 擷取兩個字串之間日誌 n 匹配行的下一行 n 追加到下一行 p 列印 p 列印到 n b 無條件跳轉 未匹配後面不執行 t 有條件跳轉 未匹配...

sed awk 資料的檢索

在格式化文字中查詢縮寫詞相應的完整詞語,如輸入 basic 返回其全稱 beginner s all purpose symbolic instruction code 下面這個縮寫詞列表可理解為乙個簡單的資料庫 zhanhailiang linux 06bq cat acronyms basic ...