2011-06-08 62 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選項 - 文件匹配