удалить все символы после шаблона в текстовом файле - PullRequest
12 голосов
/ 26 апреля 2011

У меня есть текстовый файл с тысячами строк текста.Каждая строка заканчивается как

\\server\share\file.txt -> information

Я хочу удалить все после пробела после конца расширения файла.Так что все после "->" (после первой цитаты есть пробел)

Как бы вы это сделали?Я хотел бы использовать vim, поскольку я пытаюсь понять об этом больше, но подойдет любая программа;Я хотел бы сделать это в ближайшее время.

Ответы [ 5 ]

22 голосов
/ 26 апреля 2011

Ваше описание противоречиво.

  1. "все, что идет после пробела после конца расширения файла"
  2. "Так что все после" -> "(после пробела есть пробелпервая цитата) "

Вы хотели сохранить стрелку или нет?

1 просто достигается с помощью:

:%s/ ->.*/

и фактически, если вы действительно это сделалихотите оставить пробел перед стрелкой, как вы сказали, это будет:

:%s/ ->.*/ /

2 можно сделать с помощью:

:%s/\( ->\).*/\1/

Если вы предпочитаете просматривать результаты вашегопоиск до замены вы можете построить свой поиск сначала, используя /:

/\( ->\).*

Это выделит все результаты, чтобы убедиться, что вы заменяете правильную вещь.Затем можно выполнить команду замены с пустым поисковым термином, чтобы использовать последний поиск (материал, который выделен).

:%s//\1/
7 голосов
/ 26 апреля 2011

Если вы хотите сохранить стрелку:

:%s/ ->\zs .*//

Если вы хотите удалить ее:

:%s/ -> .*//
1 голос
/ 26 апреля 2011

Глобально замените

 -> .*

пустой строкой

(я предполагаю, что вы хотите удалить ->, даже если вы сказали «после».)

1 голос
/ 26 апреля 2011

Это легко сделать, используя метод расщепления. Поскольку ваши строки одинаковы и имеют специальный знак стрелки ->, разделите их и получите первый элемент

awk -F"->" '{print $1}' file

При необходимости перенаправить на новый файл.

1 голос
/ 26 апреля 2011

Позитивный взгляд может сработать, что-то вроде /(?= ->).*/ для сопоставления и замены пустотой.

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