2011-06-08 60 views
4

具体文字我需要微调一些文本使用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 
+1

您必须使用grep来执行该操作吗? – 2011-06-08 19:41:27

+0

@George Kastrinis有点像它,GNU和所有.. – James 2011-06-08 19:45:35

+0

如果你可以使用GNU工具尝试'剪切'。 – Chance 2011-06-08 19:46:22

回答

6

use awk?

awk -F: '{print $1':'$2}' inputFile > outFile 

你可以使用grep (注意,-o只返回匹配的文本)

grep -oe "^C:[^:]" inputFile > outFile 
3

cat inputFile | cut -f1,2 -d":"

-d指定你的分隔符,在这种情况下 “:”。 -f1,2表示您需要第一个和第二个字段。

第一部分不一定必须是cat inputFile,它只是无论如何都需要获取您提到的文本。关键的部分是cut -f1,2 -d":"

+0

@matchew发布的'awk'也可以工作。 – Chance 2011-06-08 19:50:19

+0

这将消除C:中的第一个':':另外,不需要猫和管道切割-f1,2 -d“:”inputFile应该工作 – matchew 2011-06-08 19:54:20

+0

@matchew,它似乎会摆脱第一个“: “但它不适合我。奇怪的。 – Chance 2011-06-08 20:03:53

2

这是非常简单的做grep -o

$ grep -o '^C:[^:]*' input 
C:\Users\Admin\Documents\report2011.docx 
C:\Users\Admin\Documents\newposter.docx 

如果能有其他驱动器只需更换C通过.

$ grep -o '^.:[^:]*' input 

如果行可以启动与驱动器名称不同的东西,您可以考虑在该行开头处出现的驱动器名称以及不存在此类驱动器名称的情况:

$ grep -o '^\(.:\|\)[^:]*' input 
2

您的文本看起来像grep的输出。如果您要求的是如何打印匹配模式的文件名,请使用GNU grep选项 - 文件匹配