2012-12-05 29 views
1

我有,看起來像這樣一個文件的URL數據的列表:用sed從日期中切出秒

http://site.com/some/site.htm,12/5/2012 3:30:39 PM 
    http://site.com/some/site.htm,12/5/2012 9:30:30 AM 
    https://site.com/some/site.htm,12/5/2012 13:30:30 PM 
    http://site.com/some/site.htm,12/5/2012 10:30:39 AM 

而且我希望它看起來像這樣:

http://site.com/some/site.htm,12/5/2012 3:30 PM 
    http://site.com/some/site.htm,12/5/2012 9:30 AM 
    https://site.com/some/site.htm,12/5/2012 13:30 PM 
    http://site.com/some/site.htm,12/5/2012 10:30 AM 

基本上從sed中刪除:XX秒部分。我也不介意在會議紀要後刪除所有內容。因爲我正在使用批處理文件腳本,所以我可以使用sed或cut。誰能幫忙?

到目前爲止,我已經試過如下:

sed 's/.*:([^,*]*) AM/\1/g' file.txt 
+0

sed's /.*:\([^,*] * \)AM/\ 1/g'file.txt –

回答

3

篩選sed -r 's/(.*):[0-9]{2}(.*)/\1\2/'

$ cat file 
    http://site.com/some/site.htm,12/5/2012 3:30:39 PM 
    http://site.com/some/site.htm,12/5/2012 9:30:30 AM 
    https://site.com/some/site.htm,12/5/2012 13:30:30 PM 
    http://site.com/some/site.htm,12/5/2012 10:30:39 AM 

$ sed -r 's/(.*):[0-9]{2}(.*)/\1\2/' file 
    http://site.com/some/site.htm,12/5/2012 3:30 PM 
    http://site.com/some/site.htm,12/5/2012 9:30 AM 
    https://site.com/some/site.htm,12/5/2012 13:30 PM 
    http://site.com/some/site.htm,12/5/2012 10:30 AM 

說明:

(.*):  # Capture everything up the last : (greedy) 
[0-9]{2} # Match the two digits 
(.*)  # Capture the rest of the line 

\1\2  # Replace with the two captured groups 

注:-r使用擴展正則表達式,可以-E依賴於您的sed fla vor,請檢查man

編輯:

$ sed -r 's/[0-9]{2}:[0-9]{2} /00 /' file 
    http://site.com/some/site.htm,12/5/2012 3:00 PM 
    http://site.com/some/site.htm,12/5/2012 9:00 AM 
    https://site.com/some/site.htm,12/5/2012 13:00 PM 
    http://site.com/some/site.htm,12/5/2012 10:00 AM 
+0

真棒!非常感謝!!你是SED上帝!哈哈。我需要這個,因爲我需要清除重複,非常有幫助! –

+0

我必須等待2分鐘才能接受您的答案,那就是您的反應速度有多快! :-) –

+0

樂意幫忙!! –

0

一個簡單的解決方案,只是尋找2位冒號後面加一個空格後,並且只用空格替換。

sed 's/:[0-9][0-9]//g' file.txt 
0

一個非常簡單的解決方案:

sed 's/:..//' file 

但是這可能是不推薦,因爲它太普通了,並且很可能如果格式化甚至略有改變出問題。

0

的替代解決方案:

sed -r 's/...([AP]M)$/\1/' file.txt 

與一個空格,接着AM或PM,不管三個字符之前它刪除結束行匹配。

上線的末端的$比賽中,括號保持AMPM這樣你就可以在置換文本的\1引用它。 -r命令行選項允許使用擴展正則表達式(需要\1引用)。