|
下面是我學習sed時參照參考書總結的一些常用sed命令,基本上每條語句都進行了調試 1.打印文件的第二行 sed -n '2p' file 2.打印1到3行 sed -n '1,3p' file 3.品配單詞用/patten/模式,eg,/Hello/ sed -n '/Hello/'p file 4.使用模式和行號進行品配,在第4行查詢Hello sed -n '4,/Hello/' file 5.配原字符(顯示原字符$之前,必須使用\屏蔽其特殊含義) sed -n '/\$/'p file 上述命令將把file中含有$的行打印出來 6.顯示整個文件(只需將范圍設置為1到最后于一行) $代表最后一行 sed -n '1,$p' file 7.任意字符 ,模式/.*/,如/.*ing/匹配任意以ing結尾的單詞 sed -n '/.*ing/'p file 8.打印首行 sed -n '1p' file 9.打印尾行 sed -n '$p' file 10.打印行號 sed -e '/beijing/=' file #整個文件都打印出來,并且匹配行打印了行號。 如果只關心實際行號,使用-n選項。 sed -n '/beijing/=' file 如果只打印行號及匹配行,必須使用兩個sed命令,并使用e選項。第一個命令打印模式匹配行,第二個使用=選項打印行號, 格式為sed -n -e '/pattern/p' -e '/pattern/=' file。 sed -n -e '/beijing/p' -e '/beijing/=' file 11.創(chuàng)建sed腳本文件 (1) #!/bin/sed -f #filename:append.sed /beijing/ a\ #插入beijing之后 "Then suddenly it happend!" chmod u+x append.sed ./append.sed file將把“Then suddenly it happend!”添加到file中beijing后面的下一行 (2) #!/bin/sed -f #filename:append.sed /beijing/ i\ #插入beijing之前 "Then suddenly it happend!" chmod u+x append.sed ./append.sed file將把“Then suddenly it happend!”添加到file中beijing前面一行 12.修改文本 (1) #!/bin/sed -f #filename:changed /beijing/ c\ xi'an 上述腳本將beijing替換為xi'an (2) 像插入動作一樣,可以使用行號代替模式,兩種方式完成相同的功能 #!/bin/sed -f #filename:changed 4 c\ xi'an 將第四行的內容替換為xi'an $代表最后一行 13.刪除文本 刪除第一行;1d意為刪除第一行。 sed '1d' file 刪除1到3行 sed '1,3d' file 刪除最后一行 sed '$d' file 刪除包含beijing的行 sed '/beijing/d' file 14.替換 替換命令用替換模式替換指定模式,格式為: [ address [,address]] s/ pattern-to-find /replacement-pattern/[g p w n] sed 's/cao/HU/' file #將file中的cao替換為HU,實際上是將所有的cao替換為HU(我實驗的時候是這樣的) sed 's/\$//' file #將file中的$用空替換(刪除) 要進行全局替換,即替換所有出現模式,只需在命令后加g選項。下面的例子將所有cao替換成hu!。 sed 's/cao/hu/g' file 將替換結果寫入一個文件用w選項,下面的例子將cao替換為CAO的替換結果寫入文件sed.out: sed 's/cao/CAO/w sed.out' file 15.使用替換修改字符串 果要附加或修改一個字符串,可以使用( &)命令,&命令保存發(fā)現模式以便重新調用 它,然后把它放在替換字符串里面。這里給出一個修改的設計思路。先給出一個被替換模式, 然后是一個準備附加在第一個模式后的另一個模式,并且后面帶有&,這樣修改模式將放在 匹配模式之前。例如, sed語句s/wrong/"badly"&/p 的結果如下 sed -n 's/wrong/badly &/p' file There is something badly wrong with the car! 原句是:There is something wrong with the car! 16.將sed結果寫入文件命令 格式為:[ address [,address]]w filename eg:sed '1,2 w fileout' file 文件file輸出到屏幕。模式范圍即1,2行輸出到文件fileout 下面例子中查詢模式There,匹配結果行寫入文件fileout1。 sed '/There/ w fileout1' file 17.從文件中讀取數據 address r filename 創(chuàng)建文件newfile,內容為: Hello nihao! Welcome Beijing! 將newfle中的內容加到file中 sed '/car!/ r newfile' file#將newfile中的內容添加顯示到file中car!后面 sed -i '/car!/ r newfile' file#將newfile中的內容添加到filefile中的car!后面 18.匹配后退出 -q sed '/cao.*/q' file#實現匹配后退出 19.處理控制字符 用一個空格替換兩個或更多的#符號。 sed 's/##*//g' file 刪除所有行首的0 sed 's/^0//g' file 要產生控制字符( ^ M),步驟如下;鍵入sed s/,然后按住< Ctrl>鍵和v鍵,釋放v鍵,再按住^鍵,并保持< Ctrl>鍵不動,再釋放兩個鍵,最后 按< return>鍵。下面命令去除行尾^ M字符。 sed -i 's/^^M//g' file 20.處理報文輸出 Database Size(MB) Data Created ----------------------------------- GOSOUTH 2048 12/11/08 TRISUD 5643 12/05/09 (2 rows affected) 為了使用上述輸出信息(文件名是data.txt)做進一步自動處理,需要知道所存數據庫名稱,為此需執(zhí)行以下 操作: 1) 使用s /-*// g刪除橫線- - - - - -。 2) 使用/^$/ d刪除空行。 3) 使用$d刪除最后一行 4) 使用1d刪除第一行。 5) 使用awk {print $1}打印第一列。 命令如下,這里使用了cat,并管道傳送結果到sed命令。 cat data.txt | sed 's/--*//g' | sed '/^$/d' | sed '$d' |sed '1d' |awk '{print $1}' 21.去除行首數字 sed 's/[0-9]//g' data.txt 22附加文本 sed 's/[0-9][0-9]*/& OK/g' data.txt #實現向data.txt中的每行中數字后面加上OK 如:原文是 Database Size(MB) Data Created ----------------------------------- GOSOUTH 2048 12/11/08 TRISUD 5643 12/05/09 (2 rows affected) 125178 before caojian 23 234 shanghai 執(zhí)行命令后 Database Size(MB) Data Created ----------------------------------- GOSOUTH 2048 OK 12 OK/11 OK/08 OK TRISUD 5643 OK 12 OK/05 OK/09 OK (2 OK rows affected) 125178 OK before caojian 23 OK 234 OK shanghai 23.從shell中向sed傳值 $NAME="It's a good idea" $REPLACE="excelent" $NEW=`echo $NAME | sed s/good/$NEW/g" ` $echo $NEW It's a excelent idea! |
|
|