首頁 > 軟體

Linux常用命令 sed 使用簡述

2020-06-16 16:28:25

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可以用來自動編輯一個或多個檔案,簡化對檔案的反復操作,編寫轉換程式等。暫時先這樣吧。


IT145.com E-mail:sddin#qq.com