1. 程式人生 > >sed修改文字用法總結

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 命令來轉到註釋行上。

相關推薦

sed修改文字用法總結

sed 編輯器是 Linux 系統管理員的工具包中最有用的資產之一, 因此,有必要徹底地瞭解其應用 Linux 作業系統最大的一個好處是它帶有各種各樣的實用工具。存在如此之多不同的實用工具,幾乎不可能知道並瞭解所有這些工具。可以簡化關鍵情況下操作的一個實用工具是 sed。它是任何管理員的工具包中最強大的工

sed常見用法總結

pen efault login 必須 passwd 文件內容 參數 分享 刪除! 簡介 sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成

三劍客命令之Sed用法總結

功能 重點 -s 輸出 img test n+1 圖片 functions sed是Linux系統中最為廣泛使用的命令行編輯器,sed本身也是一個管道命令,可將數據進行替換/刪除/新增/選取等功能。sed命令的執行過程大致如下: 1)一次從輸入中讀取一行數據;2)根

sed 插入或修改文字

sed ‘3i hello’ file 在第3行前插入一行(即插入hello到第3行,原3行變4行) Sed ‘3a hello’ file 在第3行後插入一行(即插入hello到第4行,原3還是原3

git branch用法總結

如果 命名 參數 war blank org 2.6 重命名 scm Git branch git branch 不帶參數:列出本地已經存在的分支,並且在當前分支的前面加“*”號標記,例如: #git branch* master

numpy中一些常用函數的用法總結

num matrix 空白 記錄 維數 補充 結果 創建 array 先簡單記錄一下,後續補充詳細的例子 1. strip()函數 s.strip(rm):s為字符串,rm為要刪除的字符序列 只能刪除開頭或是結尾的字符或者字符串。不能刪除中間的字符或是字符串 當rm為空

數組去重,call、apply、bind之間的區別,this用法總結

步驟 -- 之間 undefined 定義 ply clas turn 需要 一、數組去重,直接寫到Array原型鏈上。 1 //該方法只能去除相同的數字 不會去判斷24和‘24‘是不同的 所有數字和字符串數字是相同是重復的 2 Array.prototype

JavaSE(一) IO類層次關系和各種IO流的用法總結

思想 單位 out 9.png 什麽 輸入流 謝謝 混亂 體系       今天把IO流的這一知點進行一下總結,因為在之前使用io流的時候,就只知道幾個重點常用的IO類,比如FileInputStream,BufferedInputStream(緩沖流)等等,但是不知道它處

netty用法總結

ram sed 解碼 coder fff ade med 長度 bte /**decoder和encoder,如果不需要解析,就使用系統的 * ch.pipeline().addLast(new StringDecoder()); * ch.pipeline().add

delphi CxGrid用法總結(63問)

重復 註釋 ccid nvi while ren 數據顯示 ray 序號 1. 去掉cxGrid中臺頭的Box 解決:在tableview1的optionsview的groupbybox=false; **********************************

Oracle中Merge into用法總結 (轉載)

字符 存在 sin 刪除 ron mic 但是 多個 前段時間 Oracle中Merge into用法總結 (出處:http://www.cnblogs.com/dongsheng/p/4384754.html) 起因:   前段時間,因為涉及到一張表的大數據操作,要同時

Java中static關鍵字用法總結

副本 大括號 跟著 rac clas main 靜態成員變量 abstract 全局變量 1. 靜態方法 通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法 聲明為static的方法有以下幾條限制: · 它們僅能調用其他的sta

c/c++中const用法總結

沒有 pan 分配 值類型 變量初始化 _id 多少 部分 參數 1、修飾常量時:   const int temp1; //temp1為常量,不可變   int const temp2; //temp2為常量,不可變 2、修飾指針時:   主要看const在*的前後,

SVN switch 用法總結

完全 如果 jpg 進入 空間 簡單 src 控制 用法總結 一直知道SVN有個switch命令,但是對它的介紹教程卻很少,大多是生硬的svn幫助文檔裏的文字,從而一直不怎麽會用。今天看了這篇文章,突覺豁然開朗,整理下來以備查閱。 使用SVN,自然是需要與別人合作開發才能體

sed和awk之sed篇(含sed高級用法

清空 pre 需要 amp 打印 多條 邏輯 help n) (原創文章,謝絕轉載~) sed(stream editor)和 awk 是linux環境下處理文本、數據的強大“利器”,sed對數據列的處理稍遜,awk則更似一門語言,control flow的語法基本和c語言

Java中instanceof關鍵字的用法總結

animal copy false 運算 erl 一個 strong 以及 繼承 instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,

shell sed 的一些用法

shell#1、替換#將1.txt文件中的2017替換成2016顯示在屏幕上sed "s/2017/2016/g" 1.txt#將1.txt文件中的2017替換成2016顯示在屏幕上對文件徹底修改,加 i 修改進文件sed -i "s/2017/2016/g" 1.txt#Sed讀取系統變量,變量替換DATE

IrisSkin2.dll用法總結——WinForm窗體換膚總結

c/c++今天使用IrisSkin2.dll來對WinForm窗體換膚,遇到了很多問題。 我是直接用VS2010建的一個工程然後引用該dll文件,結果調試的時候出現了錯誤,錯誤信息如下:錯誤 1 未能找到類型或命名空間名稱“Sunisoft”(是否缺少 using 指令或程序集引用?) 後來看了別人寫的一個軟

C/C++:static用法總結

.sh pre 值類型 定義和使用 靜態 public out pan -1 前言:static是C/C++中一個很重要的關鍵字,最近閱讀了很多博客和資料,遂在此對自己的學習筆記進行簡單的總結並發表在這裏 一、C語言中的static ? 靜態全局變量:在全局變量之前加

Java習慣用法總結

保持 lock 學習 util catch %20 bject 負數 rac 在Java編程中,有些知識 並不能僅通過語言規範或者標準API文檔就能學到的。在本文中,我會盡量收集一些最常用的習慣用法,特別是很難猜到的用法。(Joshua Bloch的《Effective J