我需要用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
答案 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 这里是非空格字符匹配