开发者

How to trim specific text with grep

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


use awk?

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

you can use grep (note that -o returns only the matching text)

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


That is pretty simple to do with grep -o:

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

If you can have other drives just replace C by .:

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

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:

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


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 being cut -f1,2 -d":"


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


You can use this as well for your example

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

\S here is non-space character match

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜