1樓:多多來看看
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次以上,整個的意思就是匹配連續的數字或點號
2樓:福星高照的大花
正規表示式寫得有點問題,第二個是因為沒有匹配的結果,在這種情況下sed預設列印出所有輸入。你加個 -n 選項就看不到輸出了。
之所以不能匹配,問題出在中間 \([^\(<\/span>\)]*\) 這部分。這個表示 非 <, /, s, p, a, n, > 這些字元,即中間不能出現這些字元中的任意一個,而非看作一個整體。
其實,中間只需要判斷 非 < 就行了,我改一下:
echo "abc5678"|sed 's/.*\([^<]*\)<\/span>.*/\1/'
這樣應該就可以了。
3樓:匿名使用者
sed "s#\/#\\\/#g" temp_scrtxt.txt
試試看如果還不行 你看看eval命令
sed如何將一個變數替換另一個變數
shell指令碼sed命令如何使用變數替換掉包含指定字串的整行
4樓:匿名使用者
#先將包含指定字串的整行列印到變數tmptmp=$(sed -n '/$/p' 文字名)#然後將文字中這一整行字串替換為你想要修改的字串sed -i 's/$/$/g' 文字名
5樓:匿名使用者
sed "s/zip/$zip/g" file
sed雙引號可以識別變數
linux 下用shell sed替換文字中的字串
6樓:匿名使用者
sed 'n;s/hour\n/hour/' tt.txt
7樓:心想卻不能
sed 's/hour\\n/hour/' tt.txt
在前面\n加個轉義字元\就可以了,這樣比較好理解
8樓:歐洲竹子
sed是行編輯器,用這個工具非常困難。可以參考以下指令碼:
#!/bin/bash
while read line
doif echo $line | grep 'hour$' >/dev/null; then
echo $line | tr -d '\n'
else
echo $line
fidone < $1
1,將上面指令碼儲存為****.sh
2,chmod 755 ****.sh
3,./****.sh file
linu的程式設計問題編寫shell指令碼它把
您好,我來 copy為您解決這個困惑。儲存檔案複製後的路徑,即第乙個引數 dir 1 引數前移,執行shift命令之後,1的值就變成 2的值了,原來的 1就不存在了。同理 2的值變成 3的值,如果原來有9個引數,通過shift之後就剩下8個 shift 當沒有把全部引數前移完時 while 1 do...
Oracle中查詢結果替換的問題
select name,case when id 3 then 高 else 低 end from tab 如果要你那個期望結果,必須要分開考慮。select 組,sum 數量 max case when 狀態 2 then 小 else null end from tab where 狀態 2 g...
shell指令碼的概念區別,Shell指令碼的概念區別
shell shell是一種程式設計語言。作為命令語言,它互動式解釋和執行使用者輸入的命令或者自動地解釋和執行預先設定好的一連串的命令 作為程式設計語言,它定義了各種變數和引數,並提供了許多在高階語言中才具有的控制結構,包括迴圈和分支 指令碼 指令碼,是使用一種特定的描述性語言,依據一定的格式編寫的...