前言:
sed 作爲Linux三劍客之一,依賴於正則表達式,是強大的文本處理工具,可以根據條件對文本進行刪除、修改、添加等操作。
一、Sed的基本用法
1.sed的選項
選項 | 解釋 |
---|---|
-e | 指定要執行的命令 |
-n | 只輸入處理後的行 |
-i | 只編輯文件而不輸入結果 |
2.常用操作
指令 | 解釋 |
---|---|
p | 輸出指定的行 |
d | 刪除指定的行 |
s | 替換 |
r | 讀取文件 |
i | 輸入 |
p;n | 奇數行 |
n;p | 偶數行 |
q | 退出sed |
w | 另存爲新文件 |
h | 保存當前模式到一個緩衝區 |
G | 取出保存的模式 |
y | 對應替換 |
c | 取代 |
二、sed用法詳細示例
(一)顯示
1.顯示文件所有內容,相當於cat
sed -n 'p' file
2.顯示第n行到第m行
sed -n '1,5p' file
3.顯示奇數行
sed -n 'p;n' file
4.顯示偶數行
sed -n 'n;p' file
5.顯示第n行到第m行中的奇數行
sed -n 'N,M{p;n}' file
6.顯示第n行到第m行中的偶數行
sed -n 'N,M{n;p}' file
7.顯示第n行
sed -n 'Np' file
8.顯示尾行
sed -n '$p' file
9.從第n行開始,連續顯示x行
sed -n 'N,+Xp' file
10.顯示文件中包含某個字符的所有行
sed -n '/xxx/p' file
11.顯示文件的行號(只顯示行號,不顯示內容)
sed -n '=' passwd
12.顯示帶有某個字符所在行的行號(只顯示行號,不顯示內容)
sed -n '/xxx/='
(二)插入
1.在含有某個字符的行前面添加新行
sed '/XXX/i XXX' file
如:
2.在含有某個字符的行後面添加新行
sed '/XXX/a XXX' file
如:
3.在第n行前/後添加新行
sed 'Na/iXXX' file
如:在第二行後添加新行123
在第二行前添加新行123
(三)刪除
1.刪除第n行
sed 'Nd' file
2.刪除最後一行
sed '$d' file
3.刪除以某個字符結尾的行
sed '/XXX$/d' file
4.刪除以某個字符開頭的行
sed '^XXX/d' file
5.刪除第n-m行
sed 'N,Md' file
6.刪除空行
sed '/^$/d' file
7.刪除含有某個字符的行
sed '/XXX/d' file
8.刪除不含某個字符的行
sed '/XXX/!d' file
(四)替換
1.刪除文件中的某個字符(全文)
sed 's/XXX//g' file(實際就是將這個字符替換爲空)
2.將一個字符替換爲另一個字符
sed 's/XXX/YYY/g' file
3.將所有含有某個字符的行替換
sed '/XXX/c YYY' file
4.將包含某個字符的行,行中的某個字符替換爲新的字符
sed '/XXX/s/YYY/ZZZ/g' file
如:將包含root的行,行中的0替換爲123
替換前
替換後
5.將每行的第n個指定字符替換爲另一個字符
sed 's/XXX/YYY/Np' file
如:將每行的第二個root替換爲123
替換前
替換後
6.將第n-m行中的某個字符替換爲新字符
sed 'N,Ms/XXX/YYY/g' file
如:將2-7行中的bin替換爲123
7.在第n行行首插入字符
sed 'Ns/^/XXX/' file
8.在每行行首插入字符
sed 's/^/XXX/' file
9.在每行行尾插入字符
sed 's/$/XXX/' file
10.將第n行替換爲新的一行
sed 'NcXXX' file
如:將第2行替換爲+++++
11.對應替換
sed 'y/XXX/YYY/' file
如:替換前
替換後:將第二行中的bin對應替換爲123(意思是b=1,i=2,n=3)
(五)移動
1.將包含某個字符的行另存爲一個新文件
sed '/XXX/w new_file' file
2.將包含某個字符的行移至文件末尾
sed '/XXX/{H;d};$G' file
3.將第n-m行移至文件末尾
sed 'N,M{H;d};$G' file