Удаление шаблонов из строки с помощью bash

Я пытаюсь удалить некоторые шаблоны из строки ввода файла (разбор строки по строке). Вот пример строки:

1: (10/17 12:49:31.175) - CONSTANT ID1 - CONSTANT ID2: RAW DATA OUT > [0x00,0xa2,…,0x00] 

И я хочу, чтобы результат был примерно следующим:

 (12:49:31.175): RAW DATA OUT : [0x00,0xa2,…,0x00] 

Я пытаюсь использовать egrep или sed но пока не повезло, просто продолжайте получать ошибки или некоторую ошибку «unterminited substitute pattern». Вот и пример того, что я пробовал:

 echo $line | sed -e 's/.*\s\([0-9]*:[0-9]*:[0-9]*.[0-9]*\)' 

Любая помощь будет оценена по достоинству. Я обычно больше парень пакетного файла вместо bash на моей Mac OS / X.

РЕДАКТИРОВАТЬ:

Должен заметить, я читаю файл как таковой:

 while read line do 

Затем я хочу выполнить любые действия в line для каждой строки в файле.

3 Solutions collect form web for “Удаление шаблонов из строки с помощью bash”

Вы также можете вызвать perl из bash . Параметр -n arg делает цикл для каждой строки. -e означает, что скрипт является одной строкой.

 cat in.txt | perl -ne 's{.*(.*\().*? (.*) -.*(:.*?)\s\s+.*(\[.*)}{$1$2$3 : $4};' 

Это работает в вашей строке ввода:

  sed 's/.* \([0-9].*)\) .*>/(\1: RAW DATA OUT:/ ' <<\DATA 1: (10/17 12:49:31.175) - CONSTANT ID1 - CONSTANT ID2: RAW DATA OUT > [0x00,0xa2,…,0x00] DATA 

Он печатает:

 (12:49:31.175): RAW DATA OUT : [0x00,0xa2,…,0x00] 
 sed ' s/^[^(]*// s/([^ ]\+ /(/ s/ - CONSTANT ID// s/ \+>/ :/ ' <<DATA 1: (10/17 12:49:31.175) - CONSTANT ID: RAW DATA OUT > [0x00,0xa2,…,0x00] DATA 
 (12:49:31.175): RAW DATA OUT : [0x00,0xa2,…,0x00] 

Новые строки в сценарии sed могут быть заменены точкой с запятой, если вы предпочитаете


В замкнутом цикле:

 while read line; do echo "$line" | sed 's/^[^(]*//; s/([^ ]\+ /(/; s/ - CONSTANT ID//; s/ \+>/ :/' done < filename 
  • Shell Script для изменения языка не имеет эффекта
  • udev power_supply правила не запускают
  • Сколько снарядов я глубоко?
  • Автоматически определять, когда файл достиг предела размера
  • Как показать результаты, найденные в выражении if then?
  • Расширение переменной в круглых скобках и котировках
  • Есть ли более элегантный способ подсчета слов и присвоение этому числу переменных?
  • Как скопировать файл в сценарий bash и переименовать его во время копирования и поместить его в тот же каталог
  • Реализация инструмента String -> PDF Stamp
  • Создание нескольких входных файлов с помощью sed в цикле for
  • Параллелизируйте цикл Bash FOR Loop
  • chmod не работает на Mac
  • Interesting Posts

    Может ли «apt-get -s upgrade» или какая-либо другая команда apt указать список репозиториев, из которых будут загружены пакеты?

    Может ли root / superuser прочитать мои защищенные от чтения файлы?

    Несколько версий Java на одном ПК

    Зачем использовать swap, когда в ОЗУ имеется достаточно свободного места?

    AWK, как добавить все столбцы, начинающиеся с определенной строки

    Как отключить эмуляцию правой кнопки мыши Xorg во время выполнения

    Перемещение скомпилированного ассемблерного кода в загрузочный сектор устройства USB

    Debian: exim, Maildir и почта

    Открытие командной строки в текстовом редакторе – что это называется?

    Получить информацию о последовательном порту домена libvirt?

    Ошибка Sed, заменяющая частичную строку переменной

    bash vs zsh: scoping и `typeset -g`

    Обновление ядра Linux сломало мой компьютер

    pdftk: невозможно просмотреть файл pdf

    Как проверить из командной строки, что доступная сеть?

    Linux и Unix - лучшая ОС в мире.