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次以上,整個的意思就是匹配連續的數字或點號