導航:首頁 > 程序命令 > sed命令的用法

sed命令的用法

發布時間:2022-08-30 16:32:51

『壹』 sed的用法

1,sed 's/#.*$//g' 把以#.*結尾的行中的#.*刪除
2,sed '/^$/d刪除空行。正則表達式中^表示行首,$表示行尾。^$表示空行。d表示刪除
3,sed 's/[0-9.]\+/abc/' ip\+表示的是匹配次數,表示匹配盡量多次。這里就是把192. 168. 這樣的多次匹配一次性換作abc

『貳』 誰能詳細寫下sed標簽的用法

截取或修改字元串,列印到屏幕上。
使用方法:sed 參數 '動作' 動作對象
如果用-i參數將修改文檔的內容,你的sed 's/\//\\\//g'這個我舉一個類似的再分析你的。
sed 's/old/new/g』 ***
這個就是把***文檔裡面的old這個詞換成new這個詞。
你的sed 's/\//\\\//g'裡面既是把,/換成\\/。s/\//是一部分/\\\//g又是一部分,s後面的//之間就是要替換的詞語和上面的old類似,由於/有特殊定義,所以用\轉意成普通符號/,/\\\//g從第一符號到g前面的/之間就為替換old的new,為\\/前面兩個\就是\沒有特殊意義所以為\\,後面g前面的第二個/由於有特殊意義所以用\來轉意,所以new為\\/。在s/old/new/g裡面的/為固定格式所需要的,所以想列印出/來的話,要用\來轉意,linux特殊字元轉意都用\。
詳細的參數信息用man page,這個是比不可少的,因為一個人不可能把那些東西全部記得,如果你硬要記還不如記唐詩三百首呢。只要知道這個命令或是這個工具的工作原理,使用方法自然就明了,要用到的時候查一下即可,沒有必要和自己過不去。

『叄』 linux裡面的sed命令怎麼用,做什麼的請詳細說明

sed 編輯器是 Linux 系統管理員的工具包中最有用的資產之一

Linux 操作系統最大的一個好處是它帶有各種各樣的實用工具。存在如此之多不同的實用工具,幾乎不可能知道並了解所有這些工具。可以簡化關鍵情況下操作的一個實用 工具是 sed。它是任何管理員的工具包中最強大的工具之一,並且可以證明它自己在關鍵情況下非常有價值。

sed 實用工具是一個「編輯器」,但它與其它大多數編輯器不同。除了不面向屏幕之外,它還是非互動式的。這意味著您必須將要對數據執行的命令插入到命令行或要處 理的腳本中。當顯示它時,請忘記您在使用 Microsoft Word 或其它大多數編輯器時擁有的互動式編輯文件功能。sed 在一個文件(或文件集)中非互動式、並且不加詢問地接收一系列的命令並執行它們。因而,它流經文本就如同水流經溪流一樣,因而 sed 恰當地代表了流編輯器。它可以用來將所有出現的 "Mr. Smyth" 修改為 "Mr. Smith",或將 "tiger cub" 修改為 "wolf cub"。流編輯器非常適合於執行重復的編輯,這種重復編輯如果由人工完成將花費大量的時間。其參數可能和一次性使用一個簡單的操作所需的參數一樣有限, 或者和一個具有成千上萬行要進行編輯修改的腳本文件一樣復雜。sed 是 Linux 和 UNIX 工具箱中最有用的工具之一,且使用的參數非常少。

sed 的工作方式

sed 實用工具按順序逐行將文件讀入到內存中。然後,它執行為該行指定的所有操作,並在完成請求的修改之後將該行放回到內存中,以將其轉儲至終端。完成了這一行 上的所有操作之後,它讀取文件的下一行,然後重復該過程直到它完成該文件。如同前面所提到的,默認輸出是將每一行的內容輸出到屏幕上。在這里,開始涉及到 兩個重要的因素—首先,輸出可以被重定向到另一文件中,以保存變化;第二,源文件(默認地)保持不被修改。sed 默認讀取整個文件並對其中的每一行進行修改。不過,可以按需要將操作限制在指定的行上。

該實用工具的語法為:

sed [options] '{command}' [filename]

在這篇文章中,我們將瀏覽最常用的命令和選項,並演示它們如何工作,以及它們適於在何處使用。

替換命令

sed 實用工具以及其它任何類似的編輯器的最常用的命令之一是用一個值替換另一個值。用來實現這一目的的操作的命令部分語法是:

's/{old value}/{new value}/'

因而,下面演示了如何非常簡單地將 "tiger" 修改為 "wolf":

$ echo The tiger cubs will meet on Tuesday after school | sed
's/tiger/wolf/'
The wolf cubs will meet on Tuesday after school
$

注意如果輸入是源自之前的命令輸出,則不需要指定文件名—同樣的原則也適用於 awk、sort 和其它大多數 LinuxUNIX 命令行實用工具程序。

多次修改

如果需要對同一文件或行作多次修改,可以有三種方法來實現它。第一種是使用 "-e" 選項,它通知程序使用了多條編輯命令。例如:

$ echo The tiger cubs will meet on Tuesday after school | sed -e '
s/tiger/wolf/' -e 's/after/before/'
The wolf cubs will meet on Tuesday before school
$

這是實現它的非常復雜的方法,因此 "-e" 選項不常被大范圍使用。更好的方法是用分號來分隔命令:

$ echo The tiger cubs will meet on Tuesday after school | sed '
s/tiger/wolf/; s/after/before/'
The wolf cubs will meet on Tuesday before school
$

注 意分號必須是緊跟斜線之後的下一個字元。如果兩者之間有一個空格,操作將不能成功完成,並返回一條錯誤消息。這兩種方法都很好,但許多管理員更喜歡另一種 方法。要注意的一個關鍵問題是,兩個撇號 (' ') 之間的全部內容都被解釋為 sed 命令。直到您輸入了第二個撇號,讀入這些命令的 shell 程序才會認為您完成了輸入。這意味著可以在多行上輸入命令—同時 Linux 將提示符從 PS1 變為一個延續提示符(通常為 ">")—直到輸入了第二個撇號。一旦輸入了第二個撇號,並且按下了 Enter 鍵,則處理就進行並產生相同的結果,如下所示:

$ echo The tiger cubs will meet on Tuesday after school | sed '
> s/tiger/wolf/
> s/after/before/'
The wolf cubs will meet on Tuesday before school
$

全局修改

讓我們開始一次看似簡單的編輯。假定在要修改的消息中出現了多次要修改的項目。默認方式下,結果可能和預期的有所不同,如下所示:

$ echo The tiger cubs will meet this Tuesday at the same time
as the meeting last Tuesday | sed 's/Tuesday/Thursday/'
The tiger cubs will meet this Thursday at the same time
as the meeting last Tuesday
$

與 將出現的每個 "Tuesday" 修改為 "Thursday" 相反,sed 編輯器在找到一個要修改的項目並作了修改之後繼續處理下一行,而不讀整行。sed 命令功能大體上類似於替換命令,這意味著它們都處理每一行中出現的第一個選定序列。為了替換出現的每一個項目,在同一行中出現多個要替換的項目的情況下, 您必須指定在全局進行該操作:

$ echo The tiger cubs will meet this Tuesday at the same time
as the meeting last Tuesday | sed 's/Tuesday/Thursday/g'
The tiger cubs will meet this Thursday at the same time
as the meeting last Thursday
$

請記住不管您要查找的序列是否僅包含一個字元或片語,這種對全局化的要求都是必需的。

sed 還可以用來修改記錄欄位分隔符。例如,以下命令將把所有的 tab 修改為空格:

sed 's// /g'

其 中,第一組斜線之間的項目是一個 tab,而第二組斜線之間的項目是一個空格。作為一條通用的規則,sed 可以用來將任意的可列印字元修改為任意其它的可列印字元。如果您想將不可列印字元修改為可列印字元—例如,鈴鐺修改為單詞 "bell"—sed 不是適於完成這項工作的工具(但 tr 是)。

有時,您不想修改在一個文件中出現的所有指定項目。有時,您只想在滿足某些條件時才作修改—例如,在與其它一些數據匹配之後才作修改。為了說明這一點,請考慮以下文本文件:

$ cat sample_one
one 1
two 1
three 1
one 1
two 1
two 1
three 1
$

假定希望用 "2" 來替換 "1",但僅在單詞 "two" 之後才作替換,而不是每一行的所有位置。通過指定在給出替換命令之前必須存在一次匹配,可以實現這一點:

$ sed '/two/ s/1/2/' sample_one
one 1
two 2
three 1
one 1
two 2
two 2
three 1
$

現在,使其更加准確:

$ sed '
> /two/ s/1/2/
> /three/ s/1/3/' sample_one
one 1
two 2
three 3
one 1
two 2
two 2
three 3
$

請 再次記住唯一改變了的是顯示。如果您查看源文件,您將發現它始終保持不變。您必須將輸出保存至另一個文件,以實現永久保存。值得重復的是,不對源文件作修 改實際是禍中有福—它讓您能夠對文件進行試驗而不會造成任何實際的損害,直到讓正確命令以您預期和希望的方式進行工作。

以下命令將修改後的輸出保存至一個新的文件:

$ sed '
> /two/ s/1/2/
> /three/ s/1/3/' sample_one > sample_two

該輸出文件將所有修改合並在其中,並且這些修改通常將在屏幕上顯示。現在可以用 head、cat 或任意其它類似的實用工具來進行查看。

腳本文件

sed 工具允許您創建一個腳本文件,其中包含從該文件而不是在命令行進行處理的命令,並且 sed 工具通過 "-f" 選項來引用。通過創建一個腳本文件,您能夠一次又一次地重復運行相同的操作,並指定比每次希望從命令行進行處理的操作詳細得多的操作。

考慮以下腳本文件:

$ cat sedlist
/two/ s/1/2/
/three/ s/1/3/
$

現在可以在數據文件上使用腳本文件,獲得和我們之前看到的相同的結果:

$ sed -f sedlist sample_one
one 1
two 2
three 3
one 1
two 2
two 2
three 3
$

注意當調用 "-f" 選項時,在源文件內或命令行中不使用撇號。腳本文件,也稱為源文件,對於想重復多次的操作和從命令行運行可能出錯的復雜命令很有價值。編輯源文件並修改一個字元比在命令行中重新輸入一條多行的項目要容易得多。

限制行

編輯器默認查看輸入到流編輯器中的每一行,且默認在輸入到流編輯器中的每一行上進行編輯。這可以通過在發出命令之前指定約束條件來進行修改。例如,只在此示例文件的輸出的第 5 和第 6 行中用 "2" 來替換 "1",命令將為:

$ sed '5,6 s/1/2/' sample_one
one 1
two 1
three 1
one 1
two 2
two 2
three 1
$

在這種情況下,因為要修改的行是專門指定的,所以不需要替換命令。因此,您可以靈活地根據匹配准則(可以是行號或一種匹配模式)來選擇要修改哪些行(從根本上限制修改)。

禁止顯示

sed 默認將來自源文件的每一行顯示到屏幕上(或重定向到一個文件中),而無論該行是否受到編輯操作的影響,"-n" 參數覆蓋了這一操作。"-n" 覆蓋了所有的顯示,並且不顯示任何一行,而無論它們是否被編輯操作修改。例如:

$ sed -n -f sedlist sample_one
$

$ sed -n -f sedlist sample_one > sample_two
$ cat sample_two
$

在 第一個示例中,屏幕上不顯示任何東西。在第二個示例中,不修改任何東西,因此不將任何東西寫到新的文件中—它最後是空的。這不是否定了編輯的全部目的嗎? 為什麼這是有用的?它是有用的僅因為 "-n" 選項能夠被一條顯示命令 (-p) 覆蓋。為了說明這一點,假定現在像下面這樣對腳本文件進行了修改:

$ cat sedlist
/two/ s/1/2/p
/three/ s/1/3/p
$

然後下面是運行它的結果:

$ sed -n -f sedlist sample_one
two 2
three 3
two 2
two 2
three 3
$

保持不變的行全部不被顯示。只有受到編輯操作影響的行被顯示了。在這種方式下,可以僅取出這些行,進行修改,然後把它們放到一個單獨的文件中:

$ sed -n -f sedlist sample_one > sample_two
$

$ cat sample_two
two 2
three 3
two 2
two 2
three 3
$

利用它的另一種方法是只顯示一定數量的行。例如,只顯示 2-6 行,同時不做其它的編輯修改:

$ sed -n '2,6p' sample_one
two 1
three 1
one 1
two 1
two 1
$

其它所有的行被忽略,只有 2-6 行作為輸出顯示。這是一項出色的功能,其它任何工具都不能容易地實現。Head 將顯示一個文件的頂部,而 tail 將顯示一個文件的底部,但 sed 允許從任意位置取出想要的任意內容。

刪除行

用一個值替換另一個值遠非流編輯器可以執行的唯一功能。它還具有許多的潛在功能,在我看來第二種最常用的功能是刪除。刪除與替換的工作方式相同,只是它刪除指定的行(如果您想要刪除一個單詞而不是一行,不要考慮刪除,而應考慮用空的內容來替換它—s/cat//)。

該命令的語法是:

'{what to find} d'

從 sample_one 文件中刪除包含 "two" 的所有行:

$ sed '/two/ d' sample_one
one 1
three 1
one 1
three 1
$

從顯示屏中刪除前三行,而不管它們的內容是什麼:

$ sed '1,3 d' sample_one
one 1
two 1
two 1
three 1
$

只顯示剩下的行,前三行不在顯示屏中出現。對於流編輯器,一般當它們涉及到全局表達式時,特別是應用於刪除操作時,有幾點要記住:

上三角號 (^) 表示一行的開始,因此,如果 "two" 是該行的頭三個字元,則

sed '/^two/ d' sample_one

將只刪除該行。
美元符號 ($) 代表文件的結尾,或一行的結尾,因此,如果 "two" 是該行的最後三個字元,則

sed '/two$/ d' sample_one

將只刪除該行。

將這兩者結合在一起的結果:

sed '/^$/ d' {filename}

刪除文件中的所有空白行。例如,以下命令將 "1" 替換為 "2",以及將 "1" 替換為 "3",並刪除文件中所有尾隨的空行:

$ sed '/two/ s/1/2/; /three/ s/1/3/; /^$/ d' sample_one
one 1
two 1
three 1
one 1
two 2
two 2
three 1
$

其通常的用途是刪除一個標題。以下命令將刪除文件中所有的行,從第一行直到第一個空行:

sed '1,/^$/ d' {filename}

添加和插入文本

可以結合使用 sed 和 "a" 選項將文本添加到一個文件的末尾。實現方法如下:

$ sed '$a
> This is where we stop
> the test' sample_one
one 1
two 1
three 1
one 1
two 1
two 1
three 1
This is where we stop
the test
$

在該命令中,美元符號 ($) 表示文本將被添加到文件的末尾。反斜線 () 是必需的,它表示將插入一個回車符。如果它們被遺漏了,則將導致一個錯誤,顯示該命令是錯亂的;在任何要輸入回車的地方您必須使用反斜線。

要將這些行添加到第 4 和第 5 個位置而不是末尾,則命令變為:

$ sed '3a
> This is where we stop
> the test' sample_one
one 1
two 1
three 1
This is where we stop
the test
one 1
two 1
two 1
three 1
$

這將文本添加到第 3 行之後。和幾乎所有的編輯器一樣,您可以選擇插入而不是添加(如果您希望這樣的話)。這兩者的區別是添加跟在指定的行之後,而插入從指定的行開始。當用插入來代替添加時,只需用 "i" 來代替 "a",如下所示:

$ sed '3i
> This is where we stop
> the test' sample_one
one 1
two 1
This is where we stop
the test
three 1
one 1
two 1
two 1
three 1
$

新的文本出現在輸出的中間位置,而處理通常在指定的操作執行以後繼續進行。

讀寫文件

重定向輸出的功能已經演示過了,但需要指出的是,在編輯命令運行期間可以同步地讀入和寫出文件。例如,執行替換,並將 1-3 行寫到名稱為 sample_three 的文件中:

$ sed '
> /two/ s/1/2/
> /three/ s/1/3/
> 1,3 w sample_three' sample_one
one 1
two 2
three 3
one 1
two 2
two 2
three 3
$

$ cat sample_three
one 1
two 2
three 3
$

由於為 w (write) 命令指定了 "1,3",所以只有指定的行被寫到了新文件中。無論被寫的是哪些行,所有的行都在默認輸出中顯示。

修改命令

除了替換項目之外,還可以將行從一個值修改為另一個值。要記住的是,替換是對字元逐個進行,而修改功能與刪除類似,它影響整行:

$ sed '/two/ c
> We are no longer using two' sample_one
one 1
We are no longer using two
three 1
one 1
We are no longer using two
We are no longer using two
three 1
$

修 改命令與替換的工作方式很相似,但在范圍上要更大些—將一個項目完全替換為另一個項目,而無論字元內容或上下文。誇張一點講,當使用替換時,只有字元 "1" 被字元 "2" 替換,而當使用修改時,原來的整行將被修改。在兩種情況下,要尋找的匹配條件都僅為 "two"。

修改全部但……

對於大多數 sed 命令,詳細說明各種功能要進行何種修改。利用感嘆號,可以在除指定位置之外的任何地方執行修改—與默認的操作完全相反。

例如,要刪除包含單詞 "two" 的所有行,操作為:

$ sed '/two/ d' sample_one
one 1
three 1
one 1
three 1
$

而要刪除除包含單詞 "two" 的行之外的所有行,則語法變為:

$ sed '/two/ !d' sample_one
two 1
two 1
two 1
$

如果您有一個文件包含一系列項目,並且想對文件中的每個項目執行一個操作,那麼首先對那些項目進行一次智能掃描並考慮將要做什麼是很重要的。為了使事情變得更簡單,您可以將 sed 與任意迭代常式(for、while、until)結合來實現這一目的。

比如說,假定您有一個名為 "animals" 的文件,其中包含以下項目:

pig
horse
elephant
cow
dog
cat

您希望運行以下常式:

#mcd.ksh
for I in $*
do
echo Old McDonald had a $I
echo E-I, E-I-O
done

結 果將為,每一行都顯示在 "Old McDonald has a" 的末尾。雖然對於這些項目的大部分這是正確的,但對於 "elephant" 項目,它有語法錯誤,因為結果應當為 "an elephant" 而不是 "a elephant"。利用 sed,您可以在來自 shell 文件的輸出中檢查這種語法錯誤,並通過首先創建一個命令文件來即時地更正它們:

#sublist
/ a a/ s/ a / an /
/ a e/ s/ a / an /
/a i/ s / a / an /
/a o/ s/ a / an /
/a u/ s/ a / an /

然後執行以下過程:

$ sh mcd.ksh 'cat animals' | sed -f sublist

現 在,在運行了 mcd 腳本之後,sed 將在輸出中搜索單個字母 a (空格,"a",空格)之後緊跟了一個母音的任意位置。如果這種位置存在,它將把該序列修改為空格,"an",空格。這樣就使問題更正後才顯示在屏幕上, 並確保各處的編輯人員在晚上可以更容易地入睡。結果是:

Old McDonald had a pig
E-I, E-I-O
Old McDonald had a horse
E-I, E-I-O
Old McDonald had an elephant
E-I, E-I-O
Old McDonald had a cow
E-I, E-I-O
Old McDonald had a dog
E-I, E-I-O
Old McDonald had a cat
E-I, E-I-O

提前退出

sed 默認讀取整個文件,並只在到達末尾時才停止。不過,您可以使用退出命令提前停止處理。只能指定一條退出命令,而處理將一直持續直到滿足調用退出命令的條件。

例如,僅在文件的前五行上執行替換,然後退出:

$ sed '
> /two/ s/1/2/
> /three/ s/1/3/
> 5q' sample_one
one 1
two 2
three 3
one 1
two 2
$

在退出命令之前的項目可以是一個行號(如上所示),或者一條查找/匹配命令:

$ sed '
> /two/ s/1/2/
> /three/ s/1/3/
> /three/q' sample_one
one 1
two 2
three 3
$

您 還可以使用退出命令來查看超過一定標准數目的行,並增加比 head 中的功能更強的功能。例如,head 命令允許您指定您想要查看一個文件的前多少行—默認數為 10,但可以使用從 1 到 99 的任意一個數字。如果您想查看一個文件的前 110 行,您用 head 不能實現這一目的,但用 sed 可以:

sed 110q filename

處理問題

當使用 sed 時,要記住的重要事項是它的工作方式。它的工作方式是:讀入一行,在該行上執行它已知要執行的所有任務,然後繼續處理下一行。每一行都受給定的每一個編輯命令的影響。

如果您的操作順序沒有十分徹底地考慮清楚,那麼這可能會很麻煩。例如,假定您需要將所有的 "two" 項目修改為 "three",然後將所有的 "three" 修改為 "four":

$ sed '
> /two/ s/two/three/
> /three/ s/three/four/' sample_one
one 1
four 1
four 1
one 1
four 1
four 1
four 1
$

最初讀取的 "two" 被修改為 "three"。然後它滿足為下一次編輯建立的准則,從而變為 "four"。最終的結果不是想要的結果—現在除了 "four" 沒有別的項目了,而本來應該有 "three" 和 "four"。

當執行這種操作時,您必須非常用心地注意指定操作的方式,並按某種順序來安排它們,使得操作之間不會互相影響。例如:

$ sed '
> /three/ s/three/four/
> /two/ s/two/three/' sample_one
one 1
three 1
four 1
one 1
three 1
three 1
four 1
$

這非常有效,因為 "three" 值在 "two" 變成 "three" 之前得到修改。

標簽和注釋

可以在 sed 腳本文件中放置標簽,這樣一旦文件變得龐大,可以更容易地說明正在發生的事情。存在各種各樣與這些標簽相關的命令,它們包括:
接下來的步驟

訪問並收藏 Linux 技術中心

閱讀 Dale Dougherty 和 Arnold Robbins 的著作 sed & awk, 2nd Edition (O'Reilly & Associates 出版社)。

: 冒號表示一個標簽名稱。例如:

:HERE

以冒號開始的標簽可以由 "b" 和 "t" 命令處理。

b {label} 充當 "goto" 語句的作用,將處理發送至前面有一個冒號的標簽。例如,

b HERE

將處理發送給行

:HERE

如果緊跟 b 之後沒有指定任何標簽,則處理轉至腳本文件的末尾。

t {label} 只要自上次輸入行或執行一次 "t" 命令以來進行了替換操作,就轉至該標簽。和 "b" 一樣,如果沒有給定標簽名,則處理轉至腳本文件的末尾。

# 符號作為一行的第一個字元將使整行被當作注釋處理。注釋行與標簽不同,不能使用 b 或 t 命令來轉到注釋行上。

『肆』 Linux中的sed是什麼意思呢,如何使用呢

sed命令行格式為:
sed [-nefri] 『command』 輸入文本/文件

常用選項:
-n∶取消默認的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到屏幕上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
-f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
-r∶sed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)
-i∶直接修改讀取的文件內容,而不是由屏幕輸出
常用命令:
a ∶ 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c ∶ 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 後面通常不接任何內容
i ∶ 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。例如 1,20s/old/new/g

定址
定址用於決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,sed將處理輸入文件的所有行。
地址是一個數字,則表示行號;是「$"符號,則表示最後一行。例如:

sed -n '3p' datafile
只列印第三行

只顯示指定行范圍的文件內容,例如:
# 只查看文件的第100行到第200行
sed -n '100,200p' mysql_slow_query.log
地址是逗號分隔的,那麼需要處理的地址是這兩行之間的范圍(包括這兩行在內)。范圍可以用數字、正則表達式、或二者的組合表示。例如:

sed '2,5d' datafile
#刪除第二到第五行
sed '/My/,/You/d' datafile
#刪除包含"My"的行到包含"You"的行之間的行
sed '/My/,10d' datafile
#刪除包含"My"的行到第十行的內容

舉例:(假設我們有一文件名為ab)
刪除某行
[root@localhost ruby] # sed '1d' ab #刪除第一行
[root@localhost ruby] # sed '$d' ab #刪除最後一行
[root@localhost ruby] # sed '1,2d' ab #刪除第一行到第二行
[root@localhost ruby] # sed '2,$d' ab #刪除第二行到最後一行
顯示某行
. [root@localhost ruby] # sed -n '1p' ab #顯示第一行
[root@localhost ruby] # sed -n '$p' ab #顯示最後一行
[root@localhost ruby] # sed -n '1,2p' ab #顯示第一行到第二行
[root@localhost ruby] # sed -n '2,$p' ab #顯示第二行到最後一行
使用模式進行查詢
[root@localhost ruby] # sed -n '/ruby/p' ab #查詢包括關鍵字ruby所在所有行
[root@localhost ruby] # sed -n '/\$/p' ab #查詢包括關鍵字$所在所有行,使用反斜線\屏蔽特殊含義
增加一行或多行字元串
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1a drink tea' ab #第一行後增加字元串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行後增加字元串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
[root@localhost ruby] # sed '1a drink tea\nor coffee' ab #第一行後增加多行,使用換行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
代替一行或多行
[root@localhost ruby] # sed '1c Hi' ab #第一行代替為Hi
Hi
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1,2c Hi' ab #第一行到第二行代替為Hi
Hi
end
替換一行中的某部分
格式:sed 's/要替換的字元串/新的字元串/g' (要替換的字元串可以用正則表達式)
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替換ruby為bird
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g' #刪除ruby
插入
[root@localhost ruby] # sed -i '$a bye' ab #在文件ab中最後一行直接輸入"bye"
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
end
bye

替換:
-e是編輯命令,用於sed執行多個編輯任務的情況下。在下一行開始編輯前,所有的編輯動作將應用到模式緩沖區中的行上。
sed -e '1,10d' -e 's/My/Your/g' datafile
#選項-e用於進行多重編輯。第一重編輯刪除第1-3行。第二重編輯將出現的所有My替換為Your。因為是逐行進行這兩項編輯(即這兩個命令都在模式空間的當前行上執行),所以編輯命令的順序會影響結果。

# 替換兩個或多個空格為一個空格

sed 's/[ ][ ]*/ /g' file_name

# 替換兩個或多個空格為分隔符:

sed 's/[ ][ ]*/:/g' file_name

# 如果空格與tab共存時用下面的命令進行替換

# 替換成空格

sed 's/[[:space:]][[:space:]]*/ /g' filename

# 替換成分隔符:

sed 's/[[:space:]][[:space:]]*/:/g' filename

==============

sed命令的調用:
在命令行鍵入命令;將sed命令插入腳本文件,然後調用sed;將sed命令插入腳本文件,並使sed腳本可執行
sed [option] sed命令 輸入文件 在命令行使用sed命令,實際命令要加單引號
sed [option] -f sed腳本文件 輸入文件 使用sed腳本文件
sed腳本文件 [option] 輸入文件 第一行具有sed命令解釋器的sed腳本文件
option如下:
n 不列印; sed不寫編輯行到標准輸出,預設為列印所有行(編輯和未編輯),p命令可以用來列印編輯行
c 下一命令是編輯命令,使用多項編輯時加入此選項
f 如果正在調用sed腳本文件,使用此選項,此選項通知sed一個腳本文件支持所用的sed命令,如
sed -f myscript.sed input_file 這里myscript.sed即為支持sed命令的文件
使用重定向文件即可保存sed的輸出
使用sed在文本中定位文本的方式:
x x為一行號,比如1
x,y 表示行號范圍從x到y,如2,5表示從第2行到第5行
/pattern/ 查詢包含模式的行,如/disk/或/[a-z]/
/pattern/pattern/ 查詢包含兩個模式的行,如/disk/disks/
/pattern/,x 在給定行號上查詢包含模式的行,如/disk/,3
x,/pattern/ 通過行號和模式查詢匹配行,如 3,/disk/
x,y! 查詢不包含指定行號x和y的行
基本sed編輯命令:
p 列印匹配行 c/ 用新文本替換定位文本
= 顯示文件行號 s 使用替換模式替換相應模式
a/ 在定位行號後附加新文本信息 r 從另一個文本中讀文本
i/ 在定位行號後插入新文本信息 w 寫文本到一個文件
d 刪除定位行 q 第一個模式匹配完成後退出或立即退出
l 顯示與八進制ASCII代碼等價的控制字元 y 傳送字元
n 從另一個文本中讀文本下一行,並附加在下一行 {} 在定位行執行的命令組
g 將模式2粘貼到/pattern n/
基本sed編程舉例:
使用p(rint)顯示行: sed -n '2p' temp.txt 只顯示第2行,使用選項n
列印范圍: sed -n '1,3p' temp.txt 列印第1行到第3行
列印模式: sed -n '/movie/'p temp.txt 列印含movie的行
使用模式和行號查詢: sed -n '3,/movie/'p temp.txt 只在第3行查找movie並列印
顯示整個文件: sed -n '1,$'p temp.txt $為最後一行
任意字元: sed -n '/.*ing/'p temp.txt 注意是.*ing,而不是*ing
列印行號: sed -e '/music/=' temp.txt
附加文本:(創建sed腳本文件)chmod u+x script.sed,運行時./script.sed temp.txt
#!/bin/sed -f
/name1/ a/ #a/表示此處換行添加文本
HERE ADD NEW LINE. #添加的文本內容
插入文本: /name1/ a/ 改成 4 i/ 4表示行號,i插入
修改文本: /name1/ a/ 改成 /name1/ c/ 將修改整行,c修改
刪除文本: sed '1d' temp.txt 或者 sed '1,4d' temp.txt
替換文本: sed 's/source/OKSTR/' temp.txt 將source替換成OKSTR
sed 's//$//g' temp.txt 將文本中所有的$符號全部刪除
sed 's/source/OKSTR/w temp2.txt' temp.txt 將替換後的記錄寫入文件temp2.txt
替換修改字元串: sed 's/source/"ADD BEFORE" &/p' temp.txt
結果將在source字元串前面加上"ADD BEFORE",這里的&表示找到的source字元並保存
sed結果寫入到文件: sed '1,2 w temp2.txt' temp.txt
sed '/name/ w temp2.txt' temp.txt
從文件中讀文本: sed '/name/r temp2.txt' temp.txt
在每列最後加文本: sed 's/[0-9]*/& Pass/g' temp.txt
從shell向sed傳值: echo $NAME | sed "s/go/$REP/g" 注意需要使用雙引號
快速一行命令:
's//.$//g' 刪除以句點結尾行
'-e /abcd/d' 刪除包含abcd的行
's/[][][]*/[]/g' 刪除一個以上空格,用一個空格代替
's/^[][]*//g' 刪除行首空格
's//.[][]*/[]/g' 刪除句號後跟兩個或更多的空格,用一個空格代替
'/^$/d' 刪除空行
's/^.//g' 刪除第一個字元,區別 's//.//g'刪除所有的句點
's/COL/(.../)//g' 刪除緊跟COL的後三個字母
's/^////g' 刪除路徑中第一個/
///////////////////////////////////////////////////////////////////////
、使用句點匹配單字元 句點「.」可以匹配任意單字元。「.」可以匹配字元串頭,也可以是中間任意字元。假定正在過濾一個文本文件,對於一個有1 0個字元的腳本集,要求前4個字元之後為X C,匹配操作如下:. . . .X C. . . .
2、在行首以^匹配字元串或字元序列 ^只允許在一行的開始匹配字元或單詞。在行首第4個字元為1,匹配操作表示為:^ . . . 1
3、在行尾以$匹配字元串或字元 可以說$與^正相反,它在行尾匹配字元串或字元, $符號放在匹配單詞後。如果在行尾匹配單詞j e t 0 1,操作如下:j e t 0 1 $ 如果只返回包含一個字元的行,操作如下:^ . $
4、使用*匹配字元串中的單字元或其重復序列 使用此特殊字元匹配任意字元或字元串的重復多次表達式。
5、使用/屏蔽一個特殊字元的含義 有時需要查找一些字元或字元串,而它們包含了系統指定為特殊字元的一個字元。如果要在正則表達式中匹配以* . p a s結尾的所有文件,可做如下操作:/ * / . p a s
6、使用[]匹配一個范圍或集合 使用[ ]匹配特定字元串或字元串集,可以用逗號將括弧內要匹配的不同字元串分開,但並不強制要求這樣做(一些系統提倡在復雜的表達式中使用逗號),這樣做可以增 加模式的可讀性。使用「 -」表示一個字元串范圍,表明字元串范圍從「 -」左邊字元開始,到「 -」右邊字元結束。假定要匹配任意一個數字,可以使用:[ 0 1 2 3 4 5 6 7 8 9 ] 要匹配任意字母,則使用:[ A - Z a - z ]表明從A - Z、a - z的字母範圍。
7、使用/{/}匹配模式結果出現的次數 使用*可匹配所有匹配結果任意次,但如果只要指定次數,就應使用/ { / },此模式有三種形式,即:
pattern/{n/} 匹配模式出現n次。
pattern/{n,/} 匹配模式出現最少n次。
pattern/{n,m} 匹配模式出現n到m次之間,n , m為0 - 2 5 5中任意整數。
匹配字母A出現兩次,並以B結尾,操作如下:A / { 2 / } B匹配值為A A B 匹配A至少4次,使用:A / { 4 , / } B

===============
替換單引號為空:
可以這樣寫:
sed 's/'"'"'//g'

sed 's/'\''//g'

『伍』 sed命令的相關使用,求教高手~

sed可以通過-i選項指定要不要將修改寫入原文件,或者如果修改原文件,要不要先備份!具體參數我是這樣理解的:
如果沒有該選項,sed將輸出送入標准輸出。該選項使sed將輸出送入原來的輸入文件中,一旦指定了後綴名suffix了以後,sed將備份原來的輸入文件,該備份文件名以原文件名後接
suffix命令,如果想在原文件名和後綴suffix之間有一個句點,那麼必須在後綴suffix中包含一個句點,-i選項後面直接加備份文件後綴,-i和後綴之間沒有空格。如果文件名需要特殊符號,必須要用反斜杠轉義例如sed –n –i\ .bak –e 『command』 txtfile或者sed –n –I』 .bak』 –e 『command』 txtfile這樣得到的備份名為txtfile口.bak就可以有空格了(這里我用口代表空格)。

/ +++++++++++++++++++++++++++++++++++++++例子++++++++++++++++++++++++++++++
sed.txt的內容如下(「^$」代表空行):
This is the 1st line.
This is the 2nd line.
^$
This is the 3rd line.
sed命令(#後面的文字表示注釋):
sed –n –i.bak -e '/^$/!{ #「/^$/!」是不要匹配空行,按回車鍵換行。
>#i這里是要在當前行前添加<LS>
>i \
><LS>
>#a這里是要在當前行後添加<LE>
>;a \
></LE>
>;p
>}' sed.txt 執行以後沒有任何顯示,是因為處理的結果輸入寫入到sed.txt,原來的內容已經備份到
sed.txt.bak中了,cat一下:
sed.txt的內容如下:
<LS>
This is the 1st line.
</LE>
<LS>
This is the 2nd line.
</LE>
<LS>
This is the 3rd line.
</LE>
Sed.txt.bak內容為(這里我用「^$」代表空行):
This is the 1st line.
This is the 2nd line.
^$
This is the 3rd line.
/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

『陸』 SED的小技巧

在sed的命令行中引用shell變數時要使用雙引號,而不是通常所用的單引號。下面是一個根據name變數的內容來刪除named.conf文件中zone段的腳本:
name='zone localhost'sed /$name/,/};/d named.conf
文本間隔
--------
# 在每一行後面增加一空行
sed G
# 將原來的所有空行刪除並在每一行後面增加一空行。這樣在輸出的文本中每一行後面將有且只有一空行。
sed '/^$/d;G'
# 在每一行後面增加兩行空行
sed 'G;G'
# 將第一個腳本所產生的所有空行刪除(即刪除所有偶數行)
sed 'n;d'
# 在匹配式樣「regex」的行之前插入一空行
sed '/regex/{x;p;x;}'
# 在匹配式樣「regex」的行之後插入一空行
sed '/regex/G'
# 在匹配式樣「regex」的行之前和之後各插入一空行
sed '/regex/{x;p;x;G;}'
編號
--------
# 為文件中的每一行進行編號(簡單的左對齊方式)。這里使用了「製表符」(tab,見本文末尾關於' '的用法的描述)而不是空格來對齊邊緣。
sed = filename | sed 'N;s/ / /'
# 對文件中的所有行編號(行號在左,文字右端對齊)。
sed = filename | sed 'N; s/^/ /; s/ *(.{6,}) /1 /'
# 對文件中的所有行編號,但只顯示非空白行的行號。
sed '/./=' filename | sed '/./N; s/ / /'
# 計算行數 (模擬 wc -l)
sed -n '$='
文本轉換和替代
--------
# Unix環境:轉換DOS的新行符(CR/LF)為Unix格式。
sed 's/.$//' # 假設所有行以CR/LF結束
sed 's/^M$//' # 在bash/tcsh中,將按Ctrl-M改為按Ctrl-V
sed 's/x0D$//' # ssed、gsed 3.02.80,及更高版本
# Unix環境:轉換Unix的新行符(LF)為DOS格式。
sed s/$/`echo -e \ `/ # 在ksh下所使用的命令
sed 's/$'/`echo \ `/ # 在bash下所使用的命令
sed s/$/`echo \ `/ # 在zsh下所使用的命令
sed 's/$/ /' # gsed 3.02.80 及更高版本
# DOS環境:轉換Unix新行符(LF)為DOS格式。
sed s/$// # 方法 1
sed -n p # 方法 2
# DOS環境:轉換DOS新行符(CR/LF)為Unix格式。
# 下面的腳本只對UnxUtils sed 4.0.7 及更高版本有效。要識別UnxUtils版本的。sed可以通過其特有的「--text」選項。你可以使用幫助選項(「--help」)看其中有無一個「--text」項以此來判斷所使用的是否是UnxUtils版本。其它DOS版本的的sed則無法進行這一轉換。但可以用「tr」來實現這一轉換。
sed s/ // infile >outfile # UnxUtils sed v4.0.7 或更高版本
tr -d <infile >outfile # GNU tr 1.22 或更高版本
# 將每一行前導的「空白字元」(空格,製表符)刪除使之左對齊
sed 's/^[ ]*// #見本文末尾關於' '用法的描述
# 將每一行拖尾的「空白字元」(空格,製表符)刪除
sed 's/[ ]*$//' # 見本文末尾關於' '用法的描述
# 將每一行中的前導和拖尾的空白字元刪除
sed 's/^[ ]*//;s/[ ]*$//'
# 在每一行開頭處插入5個空格(使全文向右移動5個字元的位置)
sed 's/^/ /'
# 以79個字元為寬度,將所有文本右對齊
sed -e :a -e 's/^.{1,78}$/ &/;ta' # 78個字元外加最後的一個空格
# 以79個字元為寬度,使所有文本居中。在方法1中,為了讓文本居中每一行的前頭和後頭都填充了空格。在方法2中,在居中文本的過程中只在文本的前面填充空格,並且最終這些空格將有一半會被刪除。此外每一行的後頭並未填充空格。
sed -e :a -e 's/^.{1,77}$/ & /;ta' # 方法1
sed -e :a -e 's/^.{1,77}$/ &/;ta' -e 's/(*)1/1/' # 方法2
# 在每一行中查找字串「foo」,並將找到的「foo」替換為「bar」
sed 's/foo/bar/' # 只替換每一行中的第一個「foo」字串
sed 's/foo/bar/4' # 只替換每一行中的第四個「foo」字串
sed 's/foo/bar/g' # 將每一行中的所有「foo」都換成「bar」
sed 's/(.*)foo(.*foo)/1bar2/' # 替換倒數第二個「foo」
sed 's/(.*)foo/1bar/' # 替換最後一個「foo」
# 只在行中出現字串「baz」的情況下將「foo」替換成「bar」
sed '/baz/s/foo/bar/g'
# 將「foo」替換成「bar」,並且只在行中未出現字串「baz」的情況下替換
sed '/baz/!s/foo/bar/g'
# 不管是「scarlet」「ruby」還是「puce」,一律換成「red」
sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' #對多數的sed都有效
gsed 's/scarlet|ruby|puce/red/g' # 只對GNU sed有效
# 倒置所有行,第一行成為最後一行,依次類推(模擬「tac」)。
# 由於某些原因,使用下面命令時HHsed v1.5會將文件中的空行刪除
sed '1!G;h;$!d' # 方法1
sed -n '1!G;h;$p' # 方法2
# 將行中的字元逆序排列,第一個字成為最後一字,……(模擬「rev」)
sed '/ /!G;s/(.)(.* )/&21/;//D;s/.//'
# 將每兩行連接成一行(類似「paste」)
sed '$!N;s/ / /'
# 如果當前行以反斜杠「」結束,則將下一行並到當前行末尾並去掉原來行尾的反斜杠
sed -e :a -e '/\$/N; s/\ //; ta'
# 如果當前行以等號開頭,將當前行並到上一行末尾並以單個空格代替原來行頭的「=」
sed -e :a -e '$!N;s/ =/ /;ta' -e 'P;D'
# 為數字字串增加逗號分隔符號,將「1234567」改為「1,234,567」
gsed ':a;s/B[0-9]{3}>/,&/;ta' # GNU sed
sed -e :a -e 's/(.*[0-9])([0-9]{3})/1,2/;ta' # 其他sed
# 為帶有小數點和負號的數值增加逗號分隔符(GNU sed)
gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9])/12,3/g;ta'
# 在每5行後增加一空白行 (在第5,10,15,20,等行後增加一空白行)
gsed '0~5G' # 只對GNU sed有效
sed 'n;n;n;n;G;' # 其他sed
選擇性地顯示特定行
--------
# 顯示文件中的前10行 (模擬「head」的行為)
sed 10q
# 顯示文件中的第一行 (模擬「head -1」命令)
sed q
# 顯示文件中的最後10行 (模擬「tail」)
sed -e :a -e '$q;N;11,$D;ba'
# 顯示文件中的最後2行(模擬「tail -2」命令)
sed '$!N;$!D'
# 顯示文件中的最後一行(模擬「tail -1」)
sed '$!d' # 方法1
sed -n '$p' # 方法2
# 顯示文件中的倒數第二行
sed -e '$!{h;d;}' -e x # 當文件中只有一行時,輸入空行
sed -e '1{$q;}' -e '$!{h;d;}' -e x # 當文件中只有一行時,顯示該行
sed -e '1{$d;}' -e '$!{h;d;}' -e x # 當文件中只有一行時,不輸出
# 只顯示匹配正則表達式的行(模擬「grep」)
sed -n '/regexp/p' # 方法1
sed '/regexp/!d' # 方法2
# 只顯示「不」匹配正則表達式的行(模擬「grep -v」)
sed -n '/regexp/!p' # 方法1,與前面的命令相對應
sed '/regexp/d' # 方法2,類似的語法
# 查找「regexp」並將匹配行的上一行顯示出來,但並不顯示匹配行
sed -n '/regexp/{g;1!p;};h'
# 查找「regexp」並將匹配行的下一行顯示出來,但並不顯示匹配行
sed -n '/regexp/{n;p;}'
# 顯示包含「regexp」的行及其前後行,並在第一行之前加上「regexp」所
# 在行的行號 (類似「grep -A1 -B1」)
sed -n -e '/regexp/{=;x;1!p;g;$!N;p;D;}' -e h
# 顯示包含「AAA」、「BBB」或「CCC」的行(任意次序)
sed '/AAA/!d; /BBB/!d; /CCC/!d' # 字串的次序不影響結果
# 顯示包含「AAA」、「BBB」和「CCC」的行(固定次序)
sed '/AAA.*BBB.*CCC/!d'
# 顯示包含「AAA」「BBB」或「CCC」的行 (模擬「egrep」)
sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d # 多數sed
gsed '/AAA|BBB|CCC/!d' # 對GNU sed有效
# 顯示包含「AAA」的段落 (段落間以空行分隔)
# HHsed v1.5 必須在「x;」後加入「G;」,接下來的3個腳本都是這樣
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'
# 顯示包含「AAA」「BBB」和「CCC」三個字串的段落 (任意次序)
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'
# 顯示包含「AAA」、「BBB」、「CCC」三者中任一字串的段落 (任意次序)
sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
gsed '/./{H;$!d;};x;/AAA|BBB|CCC/b;d' # 只對GNU sed有效
# 顯示包含65個或以上字元的行
sed -n '/^.{65}/p'
# 顯示包含65個以下字元的行
sed -n '/^.{65}/!p' # 方法1,與上面的腳本相對應
sed '/^.{65}/d' # 方法2,更簡便一點的方法
# 顯示部分文本——從包含正則表達式的行開始到最後一行結束
sed -n '/regexp/,$p'
# 顯示部分文本——指定行號范圍(從第8至第12行,含8和12行)
sed -n '8,12p' # 方法1
sed '8,12!d' # 方法2
# 顯示第52行
sed -n '52p' # 方法1
sed '52!d' # 方法2
sed '52q;d' # 方法3,處理大文件時更有效率
# 從第3行開始,每7行顯示一次
gsed -n '3~7p' # 只對GNU sed有效
sed -n '3,${p;n;n;n;n;n;n;}' # 其他sed
# 顯示兩個正則表達式之間的文本(包含)
sed -n '/Iowa/,/Montana/p' # 區分大小寫方式
選擇性地刪除特定行
--------
# 顯示通篇文檔,除了兩個正則表達式之間的內容
sed '/Iowa/,/Montana/d'
#刪除文件中相鄰的重復行(模擬「uniq」)只保留重復行中的第一行,其他行刪除
sed '$!N; /^(.*) 1$/!P; D'
#刪除文件中的重復行,不管有無相鄰。注意hold space所能支持的緩存大小,或者使用GNU sed。
sed -n 'G; s/ /&&/; /^([ -~]* ).* 1/d; s/ //; h; P'
# 刪除除重復行外的所有行(模擬「uniq-d」)
sed '$!N; s/^(.*) 1$/1/; t; D'
#刪除文件中開頭的10行
sed '1,10d'
#刪除文件中的最後一行
sed '$d'
#刪除文件中的最後兩行
sed 'N;$!P;$!D;$d'
#刪除文件中的最後10行
sed -e :a -e '$d;N;2,10ba' -e 'P;D' # 方法1
sed -n -e :a -e '1,10!{P;N;D;};N;ba' # 方法2
# 刪除8的倍數行
gsed '0~8d' # 只對GNU sed有效
sed 'n;n;n;n;n;n;n;d;' # 其他sed
# 刪除匹配式樣的行
sed '/pattern/d' # 刪除含pattern的行。當然pattern可以換成任何有效的正則表達式
#刪除文件中的所有空行(與「grep '.' 」效果相同)
sed '/^$/d' # 方法1
sed '/./!d' # 方法2
# 只保留多個相鄰空行的第一行。並且刪除文件頂部和尾部的空行。
# (模擬「cat -s」)
sed '/./,/^$/!d' #方法1,刪除文件頂部的空行,允許尾部保留一空行
sed '/^$/N;/ $/D' #方法2,允許頂部保留一空行,尾部不留空行
# 只保留多個相鄰空行的前兩行。
sed '/^$/N;/ $/N;//D'
#刪除文件頂部的所有空行
sed '/./,$!d'
#刪除文件尾部的所有空行
sed -e :a -e '/^ *$/{$d;N;ba' -e '}' # 對所有sed有效
sed -e :a -e '/^ *$/N;/ $/ba' # 同上,但只對 gsed 3.02.*有效
# 刪除每個段落的最後一行
sed -n '/^$/{p;h;};/./{x;/./p;}'
特殊應用
--------
# 移除手冊頁(man page)中的nroff標記。在Unix System V或bash shell下使用'echo'命令時可能需要加上 -e 選項。
sed s/.`echo \`//g # 外層的雙括弧是必須的(Unix環境)
sed 's/.^H//g' # 在bash或tcsh中,按 Ctrl-V 再按 Ctrl-H
sed 's/. //g' # sed 1.5,GNU sed,ssed所使用的十六進制的表示方法
# 提取新聞組或 e-mail 的郵件頭
sed '/^$/q' # 刪除第一行空行後的所有內容
# 提取新聞組或 e-mail 的正文部分
sed '1,/^$/d' # 刪除第一行空行之前的所有內容
# 從郵件頭提取「Subject」(標題欄欄位),並移除開頭的「Subject:」字樣
sed '/^Subject: */!d; s///;q'
# 從郵件頭獲得回復地址
sed '/^Reply-To:/q; /^From:/h; /./d;g;q'
# 獲取郵件地址。在上一個腳本所產生的那一行郵件頭的基礎上進一步的將非電郵地址的部分剃除。(見上一腳本)
sed 's/ *(.*)//; s/>.*//; s/.*[:<] *//'
# 在每一行開頭加上一個尖括弧和空格(引用信息)
sed 's/^/> /'
# 將每一行開頭處的尖括弧和空格刪除(解除引用)
sed 's/^> //'
# 移除大部分的HTML標簽(包括跨行標簽)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'
# 將分成多卷的uuencode文件解碼。移除文件頭信息,只保留uuencode編碼部分。文件必須以特定順序傳給sed。下面第一種版本的腳本可以直接在命令行下輸入;第二種版本則可以放入一個帶執行許可權的shell腳本中。(由Rahul Dhesi的一個腳本修改而來。)
sed '/^end/,/^begin/d' file1 file2 ... fileX | uudecode # vers. 1
sed '/^end/,/^begin/d' $@ | uudecode # vers. 2
# 將文件中的段落以字母順序排序。段落間以(一行或多行)空行分隔。GNU sed使用字元「v」來表示垂直製表符,這里用它來作為換行符的佔位符——當然你也可以用其他未在文件中使用的字元來代替它。
sed '/./{H;d;};x;s/ /==/g' file | sort | sed '1s/==//;s/==/ /g'
gsed '/./{H;d};x;y/ /v/' file | sort | sed '1s/v//;y/v/ /'
# 分別壓縮每個.TXT文件,壓縮後刪除原來的文件並將壓縮後的.ZIP文件命名為與原來相同的名字(只是擴展名不同)。(DOS環境:「dir /b」顯示不帶路徑的文件名)。
echo @echo off >zipup.bat
dir /b *.txt | sed s/^(.*).TXT/pkzip -mo 1 1.TXT/ >>zipup.bat

『柒』 操作系統三劍客命令-sed

    1) sed 命令使用方法

   基礎正則符號:

   ^  以什麼開頭的信息進行匹配 ^oldboy

    $  以什麼結尾的信息進行匹配 oldboy$

    ^$ 表示匹配空行信息

    .  匹配任意一個且只有一個字元 grep "."

    *  匹配前一個字元連續出現0次或者多次

    .* 匹配所有任意信息 類似於通配符*

    \  將有意義的字元信息,轉義成普通字元進行識別 

     --> 找出文件中以點結尾的信息 

      將特殊的擴展正則符號,轉換成基礎正則符號

      將沒有意義的字元信息轉成有意義的字元

     \n \r \t

   [] 匹配多個字元信息,多個字元匹配時,是或者的關系

     [ok] 在文件中找有O的字元信息 找文件中有k的字元信息

     PS: 將一個字元串信息,進行拆分成一個一個的字元進行匹配

   [^] 對匹配的字元信息進行排除

       [^ok]  在文件中找有O的字元信息 找文件中有k的字元信息,進行排除不要顯示,顯示其他信息

       [^o^k]      

  

   +  匹配前一個字元連續出現1次或者多次

   |  利用豎線可以匹配多個字元串信息

   () 將多個字元信息匯總成整體,進行過濾

      進行後項引用前項  (oldboy)\1--sed 

    {} 指定匹配前一個字元連續出現了多少次  

       {n,m} 至少連續n次,最多連續m次

       {n} 匹配只連續n次的信息

       {n,}  至少連續n次,最多不限

       {,m}  至少連續0次,最多m次 

   ?  匹配前一個字元連續出現0次或者1次

    grep 命令識別擴展正則: egrep -E

   sed 命令識別擴展正則:  sed -r

   學生問題:

   [root@oldboye ~]# grep '\\'oldboy_test.txt

    I \teach \linux.

   02. 文件中有$符號, 是識別變數, 還是識別普通符號

    [root@oldboye ~]# grep'$oldgirl' oldboy_test.txt

    $oldgirl

    [root@oldboye ~]# grep"\$oldgirl" oldboy_test.txt

    $oldgirl

    sed 命令: 字元流編輯工具(行編輯工具)==按照每行中的字元進行處理操作

   PS: 全屏編輯工具vi/vim

   sed 命令作用說明:

    編寫腳本: 修改文件內容信息時

    網路服務中的IP地址進行修改:  50台主機遷移機房--新機房

    第一個步驟: vi ifcfg-eth0

    第二個步驟: 重啟網路服務

    第三個步驟: 檢查測試  

 

    自動修改網卡地址腳本:

   第一個步驟: 修改地址

   sed -i"s#10.0.0.200#10.0.0.201#g" ifcfg-eth0

  

   第二個步驟: 重啟網路服務

   systemctl restart network

  

   第三個步驟: 過濾ip

a s eth0 網卡地址信息存儲到一個文件中 共享存儲

   

    具體功能作用:

   1) 文件中添加信息的能力 (增) ok

   2) 文件中刪除信息的能力 (刪) ok

   3) 文件中修改信息的能力 (改)

   4) 文件中查詢信息的能力(查) OK

    sed [OPTION]...{script-only-if-no-other-script} [input-file]...

    命令 參數        條件+處理= (指令)              處理文件信息

    顯示出文件中有oldboy行的信息

    sed  -n         '/oldboy/p'                     oldboy.txt  

    參見原理圖

    創建測試環境:

cat > person.txt<<EOF

101,oldboy,CEO

102,zhaoyao,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

EOF

   根據文件內容的行號進行查詢:

   [root@oldboye ~]# sed -n '3p'person.txt

    103,Alex,COO

   [root@oldboye ~]# sed -n '1,3p'person.txt

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    [root@oldboye ~]# sed -n'1p;3p' person.txt

    101,oldboy,CEO

    103,Alex,COO

 

   測試1: 根據內容信息,輸出單行內容

   # 將有oldboy行的信息找出來

    [root@oldboye ~]#sed -n '/oldboy/p' person.txt

    101,oldboy,CEO

 

    測試2: 根據內容信息,輸出多行內容(連續)

   # 將有oldboy到alex行的信息都輸出出來

   [root@oldboye ~]# sed -n'/oldboy/,/Alex/p' person.txt

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

 

   測試3: 根據內容信息,輸出多行內容(不連續)

   # 將有oldboy和alex行的信息都輸出出來

   [root@oldboye ~]# sed -n'/oldboy/p;/Alex/p'person.txt

    101,oldboy,CEO

    103,Alex,COO

    106,oldboy,CIO

 

    在文件第一行添加信息:

    100,oldgirl,UFO

   [root@oldboye ~]# sed  '1i100,oldgirl,UFO'person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

 

   [root@oldboye ~]# sed  '$a108,oldgirl,UFO' person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

    108,oldgirl,UFO

  

   測試:

   01. 在第三行後面添加oldboy.txt信息

   sed '3aoldboy.txt' person.txt

   02. 在第二行前面添加oldboy.txt信息

   sed '2ioldboy.txt' person.txt

   03. 在有oldboy行的前面添加oldgirl 後面添加olddog信息

   sed-e'/oldboy/ioldgirl'-e '/oldboy/aolddog'person.txt

  

   [root@oldboye ~]# sed -e'/oldboy/ioldgirl'-e  '/oldboy/aolddog' person.txt

    100,oldgirl,UFO

    oldgirl

    101,oldboy,CEO

    olddog

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    oldgirl

    106,oldboy,CIO

    olddog

  

   企業中編寫配置文件:

   IPaddress=10.10.10.1

   mask=255.255.255.0

   gateway=10.10.10.254

sed'$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名稱

 

    c sed 命令刪除信息方法

   練習:

   01. 刪除單行信息

   [root@oldboye ~]# # 刪除文件中第三行信息

    [root@oldboye ~]# sed '3d'person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

  

   02. 刪除多行信息

    [root@oldboye ~]# # 刪除文件中第二行到第六行內容

    [root@oldboye ~]# sed '2,6d'person.txt

    100,oldgirl,UFO

    106,oldboy,CIO

  

   測試:

   01. 刪除有oldboy信息的行

   sed '/oldboy/d' person.txt

  

   02. 刪除第三行和第六行

   [root@oldboye ~]# # 刪除文件中第二行到第六行內容

    [root@oldboye ~]# sed '2,6d'person.txt

    100,oldgirl,UFO

    106,oldboy,CIO

   

    [root@oldboye ~]# sed'3d;6d'person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    103,Alex,COO

    104,yy,CFO

    106,oldboy,CIO

  

   問題: 如何利用sed命令取消空行顯示

   [root@oldboye ~]# sed -n '/./p' person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

   

    [root@oldboye ~]# sed '/^$/d' person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

   

    [root@oldboye ~]# sed -n'/^$/!p' person.txt

    100,oldgirl,UFO

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

 

   d sed 命令修改信息方法

  

   sed 's# 原有內容#修改後內容#g' 文件信息 s /a/b/也行

   [root@oldboye ~]# sed's##oldgirl#old#g' person.txt

    sed: -e expression #1, char 12:unknown option to `s'

    [root@oldboye ~]# sed 's/#oldgirl/old/g' person.txt

    100,old,UFO

   

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

   

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

   sed 's#()#\n#g' 文件信息 後項引用前項進行替換修改

    利用sed命令取出IP地址信息:

   第一個歷程: 取出有IP地址的行

   [root@oldboye ~]#ip a s eth0|sed -n '3p'

    inet 10.0.0.200/24 brd 10.0.0.255scope global noprefixroute eth0

   第二個歷程: 取出IP地址

   [root@oldboye ~]# ip a s eth0|sed-n '3p'|sed -r 's#^.*net (.*)#\1#g'

    10.0.0.200/24 brd 10.0.0.255 scopeglobal noprefixroute eth0

    [root@oldboye ~]# ip a seth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'

    10.0.0.200

 

   sed -r 's#^.*net (.*)#\1#g'|sed -r's#(.*)/24.*#\1#g'  進行整合

   ip a s eth0|sed -n '3p'|sed -r's#^.*net (.*)/24.*#\1#g'

  

   sed -n '3p'|sed -r 's#^.*net(.*)/24.*#\1#g'  進行整合

  

   sed -n '3                        p'

   sed -r 's#^.*net (.*)/24.*#\1#g'

   sed -rn '3s#^.*net(.*)/24.*#\1#gp' 

   最終取IP地址方法

   [root@oldboye ~]# ip a s eth0|sed -rn '3s#^.*net

(.*)/24.*#\1#gp'

    10.0.0.200

 

    補充01: 修改文件內容直接進行自動備份            備份修改前的內容

   [root@oldboye ~]# sed -i.bak  's#oldboy#oldold#g' person.txt

    [root@oldboye ~]# llperson.txt.bak

    -rw-r--r--. 1 root root 104 Oct10 11:40 person.txt.bak

    [root@oldboye ~]# catperson.txt.bak

    100,#oldgirl,UFO

   

    101,oldboy,CEO

    102,zhaoyao,CTO

    103,Alex,COO

   

    104,yy,CFO

    105,feixue,CIO

    106,oldboy,CIO

 

    補充02: 在真實替換文件內容時候,一定不能讓n和i參數同時出現

    [root@oldboye ~]# sed -ni's#Alex#aaaa#gp' person.txt

    103,aaaa,COO

   [root@oldboye ~]# cat person.txt

    103,aaaa,COO

   說明: ni和參數同時使用,會將文件內容進行清空

 

   測驗替換功能:

   創建測試環境:

   -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy01.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy02.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy03.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy04.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy05.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy06.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy07.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy08.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy09.txt

    -rw-r--r--. 1 root root      0 Oct 10 02:10 oldboy10.txt

   批量修改文件的擴展名稱 將oldboyxx.txt擴展名修改為oldboyxx.jpg

  

   [root@oldboye oldboy]# lsoldboy*.txt|sed -r 's#(.*)txt#mv&\1jpg#g'

    mv oldboy01.txt oldboy01.jpg

    mv oldboy02.txt oldboy02.jpg

    mv oldboy03.txt oldboy03.jpg

    mv oldboy04.txt oldboy04.jpg

    mv oldboy05.txt oldboy05.jpg

    mv oldboy06.txt oldboy06.jpg

    mv oldboy07.txt oldboy07.jpg

    mv oldboy08.txt oldboy08.jpg

    mv oldboy09.txt oldboy09.jpg

    mv oldboy10.txt oldboy10.jpg

    mv oldboy.txt oldboy.jpg

    [root@oldboye oldboy]# lsoldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g'|bash

  

    rename  .txt       .jpg           oldboy*.txt

   命令    文件名稱需要修改的部分信息    修改成什麼信息      將什麼樣的文件進行修改

   [root@oldboye ~]# cat person.txt|sed-i 's#COO#CEO#g'

    sed: no input files

    [root@oldboye ~]# sed -i's#COO#CEO#g' person.txt

   01.vim/vi

   02.cat >xxx<

   03.echo -e "xxx \n xxx"                 添加多行信息//n表示換行

   04.sed 'na/i xxxx \n xxxx \n sxxxx'      添加多行信息/n表示換號

   p  print        輸出信息

   i  insert       插入信息,在指定信息前面插入新的信息

   a  append       附加信息,在指定信息後面附加新的信息

   d  delete       刪除指定信息

   s  substitute   替換信息 s###g(全局替換)

   c               替換修改指定的一整行信息

   [root@oldboye ~]# sed'2coldboye-sz-01' person.txt

    103,aaaa,CEO

    oldboye-sz-01

 

   -n  取消默認輸出

   -r  識別擴展正則

   -i  真實編輯文件(將內存中的信息覆蓋到磁碟中)  不能-in一起使用

   -e  識別sed命令多個操作 指令

『捌』 Linux使用sed命令添加字元串方法教程

通常在Linux中添加字元串可以用命令實現,有很多種方式,有一種就是在文本的首尾行添加字元串。那麼具體怎麼使用呢?本文就來介紹一下Linux使用sed命令添加字元串的方法。

用sed命令在行首或行尾添加字元的命令有以下幾種:

假設處理的文本為test.file

在每行的頭添加字元,比如“HEAD”,命令如下:

sed ‘s/^/HEAD&/g’ test.file

在每行的行尾添加字元,比如“TAIL”,命令如下:

sed ‘s/$/&TAIL/g’ test.file

4.也可以把兩條命令和在一起,在test.file的每一行的行頭和行尾分別添加字元“HEAD”、“TAIL”,命令:sed ‘/。/{s/^/HEAD&/;s/$/&TAIL/}’ test.file

以上其實都還OK,昨天花太多時間,主要因為被處理的文件是用mysql從資料庫提取的結果導出來的,別人給我之後我就直接處理,太腦殘了= -我一直有點懷疑之所以結果不對,有可能是windows和linux換行的問題,可是因為對sed不熟,就一直在搞sed。

眾所周知(= -),window和linux的回車換行之雲雲,如果你知道了,跳過這一段,不知道,讀一下唄:

Unix系統里,每行結尾只有“《換行》”,即“ ”;Windows系統裡面,每行結尾是“《換行》《回 車》”,即“ ”。一個直接後果是,Unix系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在 Unix下打開的話,在每行的結尾可能會多出一個^M符號。

好了,所以我的問題就出在被處理的文件的每行末尾都有^M符號,而這通常是看不出來的。可以用“cat -A test.file”命令查看。因此當我想在行尾添加字元的時候,它總是添加在行首且會覆蓋掉原來行首的字元。

補充:系統常用維護技巧

1,在 “開始” 菜單中選擇 “控制面板” 選項,打開 “控制面板” 窗口,單擊 “管理工具” 鏈接

2,在打開的 “管理工具” 窗口中雙擊 “事件查看器” 圖標

3, 接著會打開 “事件查看器” 窗口

4,在右側窗格中的樹狀目錄中選擇需要查看的日誌類型,如 “事件查看器本地--Win日誌--系統日誌,在接著在中間的 “系統” 列表中即查看到關於系統的事件日誌

5,雙擊日誌名稱,可以打開 “事件屬性” 對話框,切換到 “常規” 選項卡,可以查看該日誌的常規描述信息

6,切換到 “詳細信息” 選項卡,可以查看該日誌的詳細信息

7,打開 “控制面板” 窗口,單擊 “操作中心” 鏈接,打開 “操作中心” 窗口,展開 “維護” 區域

8,單擊 “查看可靠性歷史記錄” 鏈接,打開 “可靠性監視程序” 主界面,如圖所示, 用戶可以選擇按天或者按周為時間單位來查看系統的穩定性曲線表,如果系統近日沒出過什麼狀況, 那麼按周來查看會比較合適。觀察圖中的曲線可以發現,在某段時間內,系統遇到些問題,可靠性指數曲線呈下降的趨勢,並且在這段時間系統遇到了三次問題和一次警告,在下方的列表中可以查看詳細的問題信息。

相關閱讀:系統故障導致死機怎麼解決

1、病毒原因造成電腦頻繁死機

由於此類原因造成該故障的現象比較常見,當計算機感染病毒後,主要表現在以下幾個方面:

①系統啟動時間延長;

②系統啟動時自動啟動一些不必要的程序;

③無故死機

④屏幕上出現一些亂碼。

其表現形式層出不窮,由於篇幅原因就介紹到此,在此需要一並提出的是,倘若因為病毒損壞了一些系統文件,導致系統工作不穩定,我們可以在安全模式下用系統文件檢查器對系統文件予以修復。

2、由於某些元件熱穩定性不良造成此類故障(具體表現在CPU、電源、內存條、主板)

對此,我們可以讓電腦運行一段時間,待其死機後,再用手觸摸以上各部件,倘若溫度太高則說明該部件可能存在問題,我們可用替換法來診斷。值得注意的是在安裝CPU風扇時最好能塗一些散熱硅脂,但我在某些組裝的電腦上卻是很難見其蹤影,實踐證明,硅脂能降低溫度5—10度左右,特別是P Ⅲ 的電腦上,倘若不塗散熱硅脂,計算機根本就不能正常工作,曾遇到過一次此類現象。該機主要配置如下:磐英815EP主板、PⅢ733CPU、133外頻的128M內存條,當該機組裝完後,頻繁死機,連Windows系統都不能正常安裝,但是更換賽揚533的CPU後,故障排除,懷疑主板或CPU有問題,但更換同型號的主板、CPU後該故障也不能解決。後來由於發現其溫度太高,在CPU上塗了一些散熱硅脂,故障完全解決。實踐證明在賽揚533以上的CPU上必須要塗散熱硅脂,否則極有可能引起死機故障。

3、由於各部件接觸不良導致計算機頻繁死機

此類現象比較常見,特別是在購買一段時間的電腦上。由於各部件大多是靠金手指與主板接觸,經過一段時間後其金手指部位會出現氧化現象,在拔下各卡後會發現金手指部位已經泛黃,此時,我們可用橡皮擦來回擦拭其泛黃處來予以清潔。

4、由於硬體之間不兼容造成電腦頻繁死機

此類現象常見於顯卡與其它部件不兼容或內存條與主板不兼容,例如SIS的顯卡,當然其它設備也有可能發生不兼容現象,對此可以將其它不必要的設備如Modem、音效卡等設備拆下後予以判斷。

5、軟體沖突或損壞引起死機

此類故障,一般都會發生在同一點,對此可將該軟體卸掉來予以解決。

『玖』 Linux中sed命令同awk命令有什麼區別呢,具體該如何使用呢

sed 多用來編輯修改
awk 多用來列印
sed grep awk 俗稱三劍客
使用上sed 和 awk擴展下來,內容可多了,甚至awk可以被當作一種腳本工具,單獨出書,sed簡單的用法增刪改查都是可以直接網路到的,awk的列印也是。
例如 sed中
s 替換
sed 's/zhangsan/lisi/' yourfile 就是將zhangsan替換為lisi ,列印不執行
加上i後才真正執行 sed -i 's/zhangsan/lisi/' yourfile
d 刪除
sed '/zhangsan/d' yourfile
sed -i '/zhangsan/d' yourfile
a 追加
sed -i '/zhangsan/alisi' yourfile
i 前插

sed -i '/zhangsan/ilisi' yourfile
p 列印
sed -n '/zhangsan/p' yourfile
因為它本身也會列印一般,所以加 -n 不默認列印

awk
-F 指定分隔符
awk -F ':' '/^root/{print $7}' /etc/passwd
列印以 root開頭所在行,以「:」為分隔符,列印第七列
其效果就是列印了root的shell
純手打,望採納,謝謝,遇到具體問題仍可繼續交流

『拾』 Linux sed命令使用!

[root@www ~]# sed [-nefr] [動作]
選項與參數:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到終端上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內, -f filename 則可以運行 filename 內的 sed 動作;
-r :sed 的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
-i :直接修改讀取的文件內容,而不是輸出到終端。

動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』

function:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

閱讀全文

與sed命令的用法相關的資料

熱點內容
古玩哪個app好賣 瀏覽:146
u盤內容全部顯示為壓縮包 瀏覽:517
編譯固件時使用00優化 瀏覽:356
速借白條app怎麼樣 瀏覽:756
用紙張做的解壓東西教程 瀏覽:12
求圓的周長最快演算法 瀏覽:190
安卓熱點怎麼減少流量 瀏覽:270
北京代交社保用什麼app 瀏覽:855
第一眼解壓視頻 瀏覽:726
文件夾err是什麼 瀏覽:97
qt4編程pdf 瀏覽:572
區域網伺服器下如何連續看照片 瀏覽:254
經過加密的數字摘要 瀏覽:646
加密鎖9000變列印機 瀏覽:694
程序員的職業發展前途 瀏覽:639
安卓是世界上多少個程序員開發 瀏覽:45
解壓器官方免費 瀏覽:85
單片機p10開發 瀏覽:487
做什麼app賺錢 瀏覽:85
博途編譯失敗聯系客戶支持部門 瀏覽:929