sed常見用法總結,sed總結

來源:互聯網
上載者:User

sed常見用法總結,sed總結

編輯文本 sed -i '1i xyz' test.txt 在第一行之前sed -i '1a xyz' test.txt  在第一行之後插入sed -i '1c xyz' test.txt  把第一行資料替換成xyzsed '/^bb/i\kjdlfkjdslkf' temp.txt  //在匹配的行之前加入新一行sed '/^bb/a\kjdlfkjdslkf' temp.txt  //在匹配的行之後加入新行 sed -n '/xxx/w temp.txt' temp1.txt //temp1.txt中匹配xxx的行插入到temp.txtsed '/xx/c\sdfdsf' temp.txt //用新的一行資料替換匹配xx的行sed '1d' t.txt  /刪除檔案第一行sed '/bro/d' t.txt  //刪除帶bro的行  (實際修改,刪除等加-i)sed '/^$/d' t.txt //刪除空行sed 's/^.*uid//' t.txt  //將uid前這段字元替換成空,^第一個字元不能為*,要加.,另外在sed裡字元與*串連要加. sed 's/night/NIGHT/' 1.TXT //將night替換  (加 -i 直接修改源檔案1.txt,而不是將替換後的資料輸出到螢幕)sed 's/night/NIGHT/g' 1.TXT  替換所有,不加g一行只替換一次sed 's/.html//' b.txt >b0.txtsed 'y/bo/BO/' test.txt  //將b替換成B,o替換成Osed 'y/bb ll/BB LL/' test.txt  //將bb替換成BB,ll替換成LL查詢文本sed '/he/w test1.txt' test.txt   //讀取test.txt內容匹配he的行寫入test1.txtsed '1,2w test1.txt' test.txt    //讀取test.txt內容,第一二行寫入test1.txtsed '/he/r test1.txt' test.txt //讀取test.txt內容匹配he的行與test1.txt所有內容合并後輸出 sed -n '1,3p' getrow.sh   //顯示一行到三行的肉容sed -n '1,/hello/'p  orig.txt //從第一行開始列印,列印到第一個含有hello行//n的作用是取消預設輸出 只列印包含模板的行,預設為列印所有行(編輯和未編輯)sed -n '$p' getrow.sh   //最後一行sed -n '/echo/'p while.sh  //列印包括echo字元的行 /pattern/模式sed -e '/echo/=' while.sh  //並且列印行號(並且整個檔案都列印) -n 只列印實際行號  列印行號使用=sed -n -e '/dfs.support.append/=' hdfs-default.xmlsed -n  -e '/we/p' -e '/we/=' 2.txt  //只列印匹配的行,並行顯示行號 sed -n  '/aa/='  aa.txt  //只顯示匹配上的行號sed -n '/^h/'p test.txt //顯示h為開頭的行sed '/^hello/d' test.txt  //查詢非某某開頭的寫法sed -n '/s\{2,\}/'p test.txt //s字元至少匹配兩次sed -n '/[0-9]\{1,\}/'p test.txt //包含數位行,用[0-9]+不支援sed '2q' test.txt  //列印到第二行退出需要注意的是,sed並不直接操作初始資料,它操作的是一份未經處理資料的拷貝。sed處理時,把當前處理的行儲存在臨時緩衝區中,然後處理緩衝區中的內容,處理完成後,如果沒有重新導向到檔案, 將把緩衝區中的內容送往螢幕,接著處理下一行直到處理完畢



sed的用法

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

1.s/.*(time.*) ms/\1/,我想你不瞭解的主要是\1這個吧,我舉個例子,s/regexp/\1/,這句的意思就是用regexp中的第1個子運算式的內容來替換符合運算式regexp的內容。放在你這個例子中就是,s/.*(time.*) ms/\1/,第1個正則中(time.*)是子運算式,第二個中的\1是指將滿足.*(time.*) ms的內容替換為第1個子運算式(time.*),所以輸出為time=XX

2.s/.*time=//,要明白sed中如何替換文本的,s/regexp1/replacement/,是用replacement來替換regexp1運算式所匹配的內容,在你這個例子中要替換的運算式是/.*time=/,替換的內容為空白,//,所以實際的意思就是將/.*time=/匹配的內容刪除,輸出為xx ms

3.[0-9.]的意思是匹配數字0-9或.,+的意思是重複前一個匹配1次以上,整個的意思就是匹配連續的數字或點號
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.