如何使用 grep 修剪特定文本
我需要用 grep 修剪一些文本,我尝试了各种其他方法,但运气不佳,例如:
C:\Users\Admin\Documents\report2011.docx: My Report 2011
C:\Users\Admin\Documents\newposter.docx: Dinner Party Poster 08
如何修剪文本文件,以便修剪“:”和所有字符在它之后。
例如,输出将是这样的:
C:\Users\Admin\Documents\report2011.docx
C:\Users\Admin\Documents\newposter.docx
I am in need of trimming some text with grep, I have tried various other methods and havn't had much luck, so for example:
C:\Users\Admin\Documents\report2011.docx: My Report 2011
C:\Users\Admin\Documents\newposter.docx: Dinner Party Poster 08
How would it be possible to trim the text file, so to trim the ":" and all characters after it.
E.g. so the output would be like:
C:\Users\Admin\Documents\report2011.docx
C:\Users\Admin\Documents\newposter.docx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 awk 吗?
你可以使用 grep
(请注意 -o 仅返回匹配的文本)
use awk?
you can use grep
(note that -o returns only the matching text)
使用
grep -o
做到这一点非常简单:如果您可以有其他驱动器,只需将
C
替换为。
:如果一行可以以与驱动器名称不同的东西,您可以考虑在行开头出现驱动器名称以及不存在此类驱动器名称的情况:
That is pretty simple to do with
grep -o
:If you can have other drives just replace
C
by.
:If a line can start with something different than a drive name, you can consider both the occurrence a drive name in the beginning of the line and the case where there is no such drive name:
cat 输入文件 | cut -f1,2 -d":"
-d
指定分隔符,在本例中为“:”。-f1,2
表示您需要第一个和第二个字段。第一部分不一定是
cat inputFile
,它只是获取您引用的文本所需的任何内容。关键部分是cut -f1,2 -d":"
cat inputFile | cut -f1,2 -d":"
The
-d
specifies your delimiter, in this case ":". The-f1,2
means you want the first and second fields.The first part doesn't necessarily have to be
cat inputFile
, it's just whatever it takes to get the text that you referred to. The key part beingcut -f1,2 -d":"
您的文本看起来像 grep 的输出。如果您要问的是如何打印与模式匹配的文件名,请使用 GNU grep 选项 --files-with-matches
Your text looks like output of grep. If what you're asking is how to print filenames matching a pattern, use GNU grep option --files-with-matches
您也可以将其用于示例
\S 这里是非空格字符匹配
You can use this as well for your example
\S here is non-space character match