gpt4 book ai didi

linux - 使用 Sed 从日期中删除秒数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:56 28 4
gpt4 key购买 nike

我在一个文件中有一个 url 数据列表,如下所示:

    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

最佳答案

像这样 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 风格,检查 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

关于linux - 使用 Sed 从日期中删除秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13727381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com