awk,sed是linux比較複雜的兩個命令,在處理格式化的檔案對我們有很大的幫助,最近,學習了這方面的知識,做了下總結。
1awk
語法: awk [-ffield-separator] ' begin pattern end' file
awk主要處理格式化的檔案,讀取檔案的一行,分析該行,並通過分隔符獲取到各個域位的值,然後通過pattern去匹配對應的行,匹配的上的話就執行command命令,其預設操作是列印出該行。對於命令中的begin和end兩個關鍵字,指明了在處理文字內容前和後,分別執行command1和command2處理操作。
fs 輸入域分隔符,預設為乙個空格
rs 輸入記錄分隔符
nf 當前記錄裡域個數
nr 到目前為止記錄數
ofs
輸出域分隔符
ors
輸出記錄分隔符
awk的典型用法:
1.匹配某一行:
awk'/101/' file; 匹配帶有101字串的行
awk'$1==5' file 匹配第乙個域值為5的行
awk'$1=="ct"' file 匹配第乙個域值為「ct"的行
2awk 'begin '
將分隔符設定為空格、:、
tab、
|同時做為分隔符。
3awk '$1 ~ /101/ ' file
將行中第乙個域中含有
101字串的第乙個域列印出來
4awk 'begin ' file 在
command
中可以定義命令列自己用的變數,在該例子中定義了變數
max,在
command
使用該變數時,直接使用其變數名即可,後面的
max= ($1 >max ?$1:max);
很類似於
c語言中的語法,當第乙個域大於
max時
max是第乙個域的值。
5awk '/tom/ end ' file
end表示在所有輸入行處理完後進行處理,統計
6awk '' file1 file2 file3>fileall 把
file1
、file2
、file3
的檔案內容全部寫到
fileall
中,格式為列印檔案並前置檔名。
7awk ' $1!=previous ' fileall
把合併後的檔案重新分拆為
3個檔案。並與原檔案一致。
8awk 'begin ' 將
date
命令得到的結果傳送給
getline,
並將其列印出來
9ifconfig-a|grep vlan.|awk ''
將系統中的vlan.x的橋介面刪除掉
2sed
sed是乙個檔案處理工具,可以對檔案的行進行操作,主要是對資料進行新增,刪除,替換,選取等特定的工作,記住sed的操作不會對原始檔產生影響,只是輸出其處理後的結果,其命令列格式如下:
sed[-nefri] 'command' 輸入文字
-n:使用安靜模式,只把處理的部分輸出到螢幕上。
-i:直接修改讀取的檔案內容,而不是由螢幕輸出。
常用命令:
a:新增,在新的一行新增一行字串,for example:sed '1a drinktea' ab, sed '1,3a drink tea' ab
d:刪除,刪除一行或多行, for example: sed '1d' ab, sed '$d' ab刪除最後一行。
p:顯示某行,通常與-n共同使用,for example: sed -n '1p' ab, sed -n '2,$p' ab
c: 替換某一行,for example: sed '1,2c hi' ab,將第1,2行替換為hi
s: 替換一行中的某部分,格式: sed 's/要替換的字串/新的字串/g' for example:
sed -n '/ruby/p' ab|sed's/ruby/bird/g'
sed 使用小結
sed可用來編輯文字,主要作用是查詢和替換 1.查詢 sed n ahcming p以上作用等同於 grep ahcming 使用 n,sed將不會在操作完成後列印,只有p才表示輸出 2替換sed 命令列 sed s 查詢內容 替換內容 sed s 查詢內容 替換內容 g 行為模式 每次讀取一行,查...
sed 和 awk 的運用
n 遮蔽預設輸出,預設sed會輸出讀取文件的全部內容 r 讓sed支援擴充套件正則 i sed直接修改原始檔,預設sed只是通過記憶體臨時修改檔案,原始檔無影響 sed n 3,6p etc passwd 答案 sed i s usr local usr src g file 答案 awk home...
Linux下的sed工具及awk工具的使用
在linux下的sed工具和awk工具是最常用的文字處理工具,配合grep的使用將產生非常大的威力,下面就來說一下sed和awk的基礎用法,sed基本用法如下 sed命令的語法如下所示 sed nefr 動作 引數說明 n 使用安靜模式,一般所有來自stdin的資料會被列出到螢幕上,但是 n 在可以...