grep、sed和awk是linux下的文字處理工具。尤其是sed和awk,雖然使用起來比較複雜但是卻非常實用
1.正規表示式
要想使用這三個工具,首先需要掌握正規表示式的使用,這裡簡單的用乙個**來介紹一下
行首符^
^a (以a開頭的字元)重複*
重複0-任意個
行尾符$
a$ (以a結尾的字元)
?重複0-1個
字元範圍
[0-9] (0-9範圍內的字元)
+重複1-任意個
任意字元
.. (任意字元)
重複n個-m個
這裡只是簡單的展示一下比較常用的幾個符號,主要是為了下面更好的理解sed和awk
2.sed
sed 引數 '命令' 要操作的檔案
sed '2a 這是新增的一行' test.txt
新增與刪除
由於sed是以行為單位進行操作的所以我們這裡先展示一下如何新增一行或者刪除一行新增
其實這個很好理解,首先a代表新增,2代表第二行 後面的文字就是我們要新增的內容。也就是說這個命令可以讓我們在第二行的後面也就是第三行新增加我們所需要的文字內容。那如果我們需要在第二行的前面增加一行內容,也就是將原來的第二行後面的內容依次往下放一行而我們新增加的內容放在第二行該怎麼辦呢?
sed '1a 這是新增加的一行' test.txt
或者sed '2i 這是新增加的一行' test.txt
這裡的i其實就是插入,其實就是在第二行的前面加入一行。
刪除
如何刪除指定的行呢
sed '1d' test.txt
sed '1,3d' test.txt
sed '1,$d' test.txt
相信大家也都看出來了,這裡的d就代表刪除,前面的數字依舊代表行號第一行命令的意思就是刪除第一行。而第二行有兩個數字,這個其實代表的是刪除第一到三行。注意這裡刪除的是第一行、第二行和第三行,而不是只刪除第一行和第三行。最後一行其實很容易看出來了,$代表結束,也就是刪除第一行到最後一行。
查詢並列印
sed '/root/p' test.txt
替換替換可以說是sed中最最最最最實用,也是最常用的功能了。那麼替換這個功能怎麼寫呢
sed 's/root/test/' test.txt
在這裡出現了/ /看起來很像乙個括號把我們需要的內容圈了起來。沒錯,在sed中/確實有這樣的作用,但這不是他唯一的作用。這裡我們先知道/的作用類似括號把我們需要的內容限定起來就可以了。然後就是乙個孤零零的p也就是print的意思了。這樣的話sed命令如果查詢到含有root的行就會將這行列印出來。你們可以嘗試一下看看是否能夠達到理想的效果(其實應該寫成"sed -n '/root/p' test.txt"想想為什麼)
這裡的s就是說明我們需要使用到替換這個功能了。接下裡就是兩個用/分開的部分,剛剛我們說過/的功能類似括號所以我們就把這裡的root和test分成兩部分來看。第一部分也就是root部分,就是被替換部分。第二部分也就是test部分,就是我們要替換成的部分。也就說這條命令的意思是我們要把每一行中的第乙個root替換成test。注意這裡只是說每行的第乙個root那如果我們要把每行中所有的root都替換成test該怎麼辦呢?
sed 's/root/test/g' test.txt
我們需要加上g這個引數,代表全面替換即可
sed高階引數()
這個在sed裡面是很實用的東西,例如當我們只想替換一部分內容的時候,就可以使用這個引數
sed 's/^\(#\)\([a-z]\)/\2/' test.txt
這裡看起來比較複雜是因為括號在sed中是需要轉義才能夠使用的所以我們需要在括號前加上\轉義符。簡化一下看
sed 's/^(#)([a-z])/\2/' test.txt
這樣就好理解多了,第乙個括號就是我們需要匹配的第一部分在後面使用\1表示,而第二個部分使用\2表示。所以說這行sed命令的效果就是將每一行開頭的#去除,實際上我們是將前面的兩部分替換成了第二部分的內容從而實現去除的效果的。
linux下的sed命令
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...
Linux下sed的用法
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...
Linux下Sed命令的用法
1.sed簡介 2.定址 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示1,2,3行,美元符號 表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 3.sed命令 呼叫sed命令有兩種形式 se...