如何使用grep修剪特定文本

时间:2011-06-08 19:40:52

标签: linux bash awk grep

我需要用grep修剪一些文本,我尝试了其他各种方法并没有太多运气,例如:

C:\Users\Admin\Documents\report2011.docx: My Report 2011
C:\Users\Admin\Documents\newposter.docx: Dinner Party Poster 08

如何修剪文本文件,以便修剪“:”及其后面的所有字符。

E.g。所以输出就像:

C:\Users\Admin\Documents\report2011.docx
C:\Users\Admin\Documents\newposter.docx

5 个答案:

答案 0 :(得分:6)

使用awk?

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

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

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

答案 1 :(得分:3)

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

-d指定您的分隔符,在本例中为“:”。 -f1,2表示您需要第一个和第二个字段。

第一部分不一定必须是cat inputFile,它只是获取您引用的文本所需的一切。关键部分是cut -f1,2 -d":"

答案 2 :(得分:3)

使用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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

您也可以将其用于示例

grep -E -o "^C\S+"| tr -d ":"
egrep -o "^C\S+"| tr -d ":"

\S 这里是非空格字符匹配