От новичка до гуру: Курсы программирования на CyberDuff

строка sed, чтобы изменить окружающие двоеточия на точки в bash

Мне нужна строка регулярного выражения sed, которая изменит двоеточие на точки, окружающие переменную, например, из этого

a:b:c :d: e:f

к этому

a:b:c: .d. e:f

(переменная d). Я бесчисленное количество часов рыскал по Интернету, пытаясь найти решение... что непростая задача, когда Google игнорирует большинство знаков препинания. Я также искал несколько десятков книг по сценариям оболочки и PDF-файлов, но безрезультатно. Хотя я использовал отдельные буквы, каждая буква в этом примере может быть полной переменной, например.

cat:dog:bird :rabbit: mouse:rat

(rabbit) или даже пути:

/home/someone/bin:/home/someone/.local/bin:/usr/local/sbin :/usr/local/bin: /usr/games:/usr/local/games:/snap/bin

(/usr/local/bin). У всех примеров есть одна общая черта: переменная в середине, окруженная двоеточиями, которую нужно заменить на точку. Это вообще возможно с sed? Любая помощь приветствуется.

29.10.2017

  • у вас также есть пробелы вокруг того, что вы хотите заменить, как показано здесь? или ваше требование всегда переключаться между 3-м и 4-м двоеточием? 29.10.2017
  • Мысль: вы можете не найти в сети готовую строку sed для достижения того, что вы ищете. Вам может понадобиться (если вы еще этого не сделали) поэкспериментировать с созданием обычного выражения поиска и замены самостоятельно, чтобы достичь вашей конкретной цели. Есть несколько хороших pdf, веб-страниц и видеороликов на YouTube о том, как создавать строки поиска и замены. Если вы получите тот, который выполняет эту работу, вы можете опубликовать свое решение для других для этой конкретной проблемы распознавания образов. 29.10.2017
  • Почему :b: и :dog: не заменены? 29.10.2017

Ответы:


1

Если это всегда вторая строка, которую необходимо заменить, вы можете использовать awk, например:

$ awk '{gsub(/^:|:$/,".",$2)}1' file
a:b:c .d. e:f

(если вы хотите переключать начальные и конечные двоеточия во всей строке, используйте:

$ awk '{for(i=1;i<=NF;i++)gsub(/^:|:$/,".",$i)}1' file
29.10.2017

2

То, что вы называете переменной, не совсем понятно. Если это слово (только буквенно-цифровые символы и символы подчеркивания), вы можете использовать:

sed -E 's/(^|\s):(\w+):($|\s)/\1.\2.\3/'

Но если это путь, все намного сложнее, потому что путь может содержать почти любой символ, включая пробелы... Если вам нужно регулярное выражение, которое работает для путей, вы должны рассказать нам немного больше о типах путей, которые у вас есть. .

29.10.2017

3

Если это посередине с 3 частями. вы можете использовать

sed 's/ :\([^:]*\): / .\1. /'

или если у вас есть вкладка

sed 's/\t:\([^:]*\):\t/\t.\1.\t/'

но переменная не может иметь : в нем

29.10.2017
Новые материалы

Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

Игра в прятки с данными
Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

«Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

Все о кейсах: Camel, Snake, Kebab & Pascal
В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..

🔥🔥👉Питон 🆚Javascript👈🔥🔥
Сегодня Python и Javascript потрясают мир в области ИТ. Все хотят выучить Python и Javascript, чтобы получить высокооплачиваемую работу. Различные фреймворки Python и Javascript расширяют..