2021-05-12 14:32:11
Linux常用命令 sed 使用簡述
Linux/UNIX中的sed命令是Stream Editor文字流編輯的縮寫,它能同時處理多個檔案多行的內容,比如文搜尋,查詢和替換,插入或刪除。雖然sed命令在Linux/UNIX中最常見的用途是替代或查詢。通過使用sed,您甚至可以在不開啟檔案的情況下編輯檔案,這比先在VI編輯器中開啟檔案然後更改檔案要快得多。
- sed是一個強大的文字流編輯器。可以做插入、刪除、搜尋和替換(替換)。
- Linux/UNIX中的sed命令支援正規表示式,從而可以執行複雜的模式匹配。
語法:
set [option] 'command' input_file
其中option是可選的,常用的option有以下幾種:
- -n 使用安靜(silent)模式(為什麼不是-s呢?)。在一般sed的用法中,所有來自stdin的內容一般都會被列出到螢幕上。但如果加上-n引數後,則只有經過sed特殊處理的那一行(或者動作)才會被列出來;
- -e 直接在指令列模式上進行 sed 的動作編輯;
- -f 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行filename內的sed命令;
- -r 讓sed命令支援擴充套件的正規表示式(預設是基礎正規表示式);
- -i 直接修改讀取的檔案內容,而不是由螢幕輸出。
常用的命令有以下幾種:
- a : append即追加字串, a 的後面跟上字串s(多行字串可以用n分隔),則會在當前選擇的行的後面都加上字串s;
- c : 取代/替換字串,c 後面跟上字串s(多行字串可以用n分隔),則會將當前選中的行替換成字串s;
- d: delete即刪除,該命令會將當前選中的行刪除;
- i : insert即插入字串,i 後面跟上字串s(多行字串可以用n分隔),則會在當前選中的行的前面都插入字串s;
- p: print即列印,該命令會列印當前選擇的行到螢幕上;
- s: 替換,通常s命令的用法是這樣的:1,2s/old/new/g,將old字串替換成new字元
使用方法:
比如我們開啟LinuxMi.py檔案看下
1 import re
2 str_test='abcdefgHABC123456Linux迷'
3
4 #把正規表示式編譯成物件,如果經常使用該物件,此種方式可提高一定效率
5 num_regex = re.compile(r'[0-9]')
6 zimu_regex = re.compile(r'[a-zA-z]')
7 hanzi_regex = re.compile(r'[u4E00-u9FA5]')
8
9 print('輸入字串:',str_test)
10 #findall獲取字串中所有匹配的字元
11 num_list = num_regex.findall(str_test)
12 print('包含的數位:',num_list)
13 zimu_list = zimu_regex.findall(str_test)
14 print('包含的字母:',zimu_list)
15 hanzi_list = hanzi_regex.findall(str_test)
16 print('包含的漢字:',hanzi_list)
我們看替換檔案裡面的內容,把 fill 改成 fillAA,用如下命令
1、a命令用法
主要在一行的後面加上 我們需要的東西
比如我們要在第一行增加字串 linuxmi
[linuxmi@linux:~/Linux迷] $ sed '1 alinuxmi' LinuxMi.py
1 a是第一行的意思, 比如是2到3行 可以用 2,3 $是末尾的是必然要 第二行到末尾一行可以用這個表示 2,$ 比如我們要在第二行到末尾一行增加 linuxmi.com,如下命令
[linuxmi@linux:~/Linux迷] $ sed '2,$ alinuxmi.com' LinuxMi.py
效果如下
2、i命令用法
主要在一行的前面加上我們需要的東西,和a命令的效果一樣。
3、c命令用法
主要是替換一行,比如
[linuxmi@linux:~/Linux迷] $ sed '$ cwww.linuxmi.com' LinuxMi.py
4、d命令用法
刪除第5行到末尾
[linuxmi@linux:~/Linux迷] $ sed '5,$d' LinuxMi.py
5、p命令用法
p是螢幕列印和d的用法一樣
6、s命令用法
主要是替換內容,比如在文字裡面把 regex 全部替換成regexp
[linuxmi@linux:~/Linux迷] $ sed 's/regex/regexp/g' LinuxMi.py
g是全部內容意思
7、刪除組態檔中#開頭的註釋行
[linuxmi@linux:~/Linux迷] $ sed '/^#/d' LinuxMi.py
8、將所有數位替換成*
[linuxmi@linux:~/Linux迷] $ sed 's#[0-9]#*#g' LinuxMi.py
9、查詢指定分行
[linuxmi@linux:~/Linux迷] $ sed -n '2p;5p' LinuxMi.py
sed可以用來自動編輯一個或多個檔案,簡化對檔案的反復操作,編寫轉換程式等。暫時先這樣吧。
相關文章