英文:
how to print remaining portion of each line after a pattern match using sed
问题
以下是翻译好的部分:
我在我的文件中有以下文本。
log-2023-06-30-082821.txt:2023-06-30 08:30:32.648
log-2023-06-30-082821.txt:2023-06-30 08:32:07.235
log-2023-06-30-083220.txt:2023-06-30 08:32:55.831
log-2023-06-30-083604.txt:2023-06-30 08:36:39.380
我想要在出现模式匹配 ':' 时打印每行的其余部分。
输出应该如下所示。
2023-06-30 08:30:32.648
2023-06-30 08:32:07.235
2023-06-30 08:32:55.831
2023-06-30 08:36:39.380
我该如何在 Windows 中使用 Cygwin 以及 sed 来实现这个目标?我尝试了一些 sed 模式,但它们没有起作用。
英文:
I have the following text in my file.
log-2023-06-30-082821.txt:2023-06-30 08:30:32.648
log-2023-06-30-082821.txt:2023-06-30 08:32:07.235
log-2023-06-30-083220.txt:2023-06-30 08:32:55.831
log-2023-06-30-083604.txt:2023-06-30 08:36:39.380
I want to print the rest of the portion of each line as soon as there is a pattern match ':'.
The output should look like this.
2023-06-30 08:30:32.648
2023-06-30 08:32:07.235
2023-06-30 08:32:55.831
2023-06-30 08:36:39.380
How can I do this using sed. I am using Cygwin in Windows. I tried a bunch of sed patterns but they haven't worked.
答案1
得分: 2
对于单个字符,您可以使用cut
作为字段分隔符,并显示除第一个字段之外的内容。例如:
$ echo 'log-2023-06-30-082821.txt:2023-06-30 08:30:32.648' | cut -d: -f2-
2023-06-30 08:30:32.648
您还可以使用sed 's/^[^:]*://'
删除直到第一个:
字符。
英文:
For a single character, you can use it as a field separator with cut
and display except the first field. For example:
$ echo 'log-2023-06-30-082821.txt:2023-06-30 08:30:32.648' | cut -d: -f2-
2023-06-30 08:30:32.648
You can also delete up to the first :
character using sed 's/^[^:]*://'
答案2
得分: 0
这可能适用于你(GNU sed):
sed -n 's/^[^:]*://p' file
关闭隐式打印(-n
)。
匹配从行的开头到 :
之间的任何内容,删除它并打印结果。
英文:
This might work for you (GNU sed):
sed -n 's/^[^:]*://p' file
Turn off implicit printing (-n
).
Match anything from the start of the line that is not a :
until a :
, remove it and print the result.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论