7

У меня есть строка из 3 длинных чисел, разделенных запятой. Я хочу удалить номер посередине и оставить только первый номер и последний номер через запятую.

В настоящее время:

123456789123,723456789123456,834567885544334
123456789125,723456789123457,834567885544333
123456789126,723456789123458,834567885544337

Желаемый результат:

123456789123,834567885544334
123456789125,834567885544333
123456789126,834567885544337

Я пытался сделать это, но это не сработало с этими регулярными выражениями:

  • регулярное выражение для поиска строки: %[0-9]+,[0-9]+,[0-9]+
  • регулярное выражение для замены строки: ^1,^2

Какое регулярное выражение на самом деле делает то, что я хочу достичь?

Примечание. В настоящее время я использую приложение Ultraedit, которое работает в Windows 7. Если вы порекомендуете лучшее приложение для редактирования текста для Windows, которое может решить мою проблему, пожалуйста, дайте мне знать.

4 ответа4

10

Вы можете просто заменить среднее число каждой строки ничем.

В редакторе

То есть в вашем редакторе найдите и замените регулярное выражение

,[0-9]+,

(который совпадает только с числами с запятыми на обеих сторонах, а для вашего ввода это просто среднее число) с одной запятой:

,

Я предполагаю, что Ultraedit поддерживает регулярное выражение поиска и замены. Если нет, попробуйте Notepad++, что я знаю.

Из командной строки

Поскольку вы пометили свой , вот как это сделать из командной строки.

СЕПГ

Используйте sed , стандартную команду Linux, также доступную для Windows в составе Cygwin или GnuWin32:

C:\>sed -e 's/,[0-9]+,/,/g' filename.txt

Powershell

Дженс отметил, что вы также можете сделать это в Windows Powershell; увидеть это объяснение.

3

Синтаксис регулярных выражений варьируется от приложения к приложению. Я не знаком с Ultredit и дам общий ответ

Вашему регулярному выражению не хватает скобок

([0-9]+), [0-9]+([0-9]+)

2

Чтобы заменить текст, нужно пометить правильное подвыражение с помощью скобок.

В UltraEdit вы должны искать следующее регулярное выражение:

 %^([0-9]+^),[0-9]+,^([0-9]+^)
2

Эквивалент Awk!

echo "$Variable" | awk 'FS="," { print $1","$3 } '

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .