2013-04-23 70 views
1

我試圖用sed從html文件中刪除一個模式。時間戳由1-2位數字的四個字母的單詞,然後這個詞前Sed從文件中刪除時間戳與正則表達式

例如:

25 mins ago 

或:

1 hour ago 

等。我已經試過用的sed是這樣的:

sed -i "s/([0-9]{1,2}) [a-z]* ago//g" 

桑達什麼都不做,我不知道如果我正則表達式是錯誤的,或者如果我不是逃避字符的正確途徑。

編輯:我通過刪除額外的空間來修復表達式,謝謝choroba。現在sed從文件中刪除文本的mos。表達式需要不那麼貪婪?還要提到的是曾經時間戳由> < 例如包圍:

>1 hour ago< 

編輯:這是爲我工作。感謝ravoori。

sed -i 's/[0-9]\{,2\} [[:alpha:]]\{4,5\} ago//g' 

任何幫助表示讚賞!

+0

有後'*'兩個空格。 – choroba 2013-04-23 15:58:19

+0

謝謝,這有幫助嗎?它從文件中刪除了所有的文本。有關如何使這個不那麼貪婪的想法? – almyz125 2013-04-23 15:59:55

+1

示例文件的外觀如何,命令運行後的預期結果是什麼? – FDinoff 2013-04-23 16:10:21

回答

3

請嘗試以下操作。你需要躲避量詞元字符{}sed

echo "1 hour ago" | sed 's/[0-9]\{,2\} [[:alpha:]]\{4\} ago//g' 
+0

謝謝你這個工作就像一個魅力,我不得不編輯它sed -i和 讓它{4,5},因爲我是一個白癡,忘記了小時是5個字母長。謝謝! – almyz125 2013-04-23 16:17:45

+0

sed -i's/[0-9] \ {,2 \} [[:alpha:]] \ {4,5 \} // g' – almyz125 2013-04-23 16:19:39

0
echo "1 hour ago" | sed -e 's/.*ago$//g' 

sed -e 's/.*ago$//g' <filename> 

這應該刪除與agofilename

你可能不希望,如果您有其他線路不僅僅是與ago結束時間戳來使用這個結尾的任何行。你沒有指定。

+0

這不會做,它需要動態的,它必須從1分鐘到59和1小時到24 – almyz125 2013-04-23 16:01:20

+0

所以你想刪除'你好以前'嗎? – abasu 2013-04-23 16:01:58

+0

不確定你是什麼意思。 – almyz125 2013-04-23 16:03:35