Как обрезать определенный текст с помощью grep - PullRequest
4 голосов
/ 08 июня 2011

Мне нужно обрезать какой-то текст с помощью 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

Ответы [ 4 ]

6 голосов
/ 08 июня 2011

использовать awk?

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

вы можете использовать grep (обратите внимание, что -o возвращает только соответствующий текст)

grep -oe "^C:[^:]" inputFile > outFile 
3 голосов
/ 09 июня 2011

Это довольно просто сделать с 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 голосов
/ 08 июня 2011

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

-d указывает ваш разделитель, в данном случае «:». -f1,2 означает, что вам нужно первое и второе поля.

Первая часть не обязательно должна быть cat inputFile, это просто все, что нужно, чтобы получить текст, на который вы ссылались. Ключевая часть: cut -f1,2 -d":"

2 голосов
/ 09 июня 2011

Ваш текст выглядит как вывод grep. Если вы спрашиваете, как напечатать имена файлов, соответствующие шаблону, используйте опцию GNU grep --files-with-match

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...