Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Вопрос к специалистам по sed и awk  (Прочитано 526 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fill.sa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Вопрос к специалистам по sed и awk
« : 06 Октябрь 2017, 15:30:36 »
Товарищи гуру помогите, перебрал кучу вариантов, но так и не решил задачу.
Значит имеет файл с текстом внутри вида:
  12345678     12345678   12  10:11:12 - 12:11:10
                          12  13:14:15 - 16:17:18
  12345678     12345678   12  10:11:12 - 12:11:10
  12345678     12345678   12  10:11:12 - 12:11:10
                          12  10:11:12 - 12:11:10 

нужно преобразовать так, чтобы где строка начинается с кучи пробелов перенеслась к предыдущей строке и удалить содержимое от первого "-" до последнего "-"
  12345678     12345678   12  10:11:12 - 12:11:10
  12345678     12345678   12  10:11:12 - 16:17:18
  12345678     12345678   12  10:11:12 - 12:11:10 


т.е. по сути удалить "\n                         " и потом заменить "-.*-" на -

И вот тут у меня проблема т.к. все в разных строчка и я могу удалить либо просто символ строки \n либо только пробелы.
В общем гуру помогите решить задачу.

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4307
  • Capture the truth
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #1 : 06 Октябрь 2017, 16:19:51 »
все в разных строчка и я могу удалить либо просто символ строки \n либо только пробелы
ну так замените перенос строки каким-либо символом, а потом наоборот.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн fill.sa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #2 : 06 Октябрь 2017, 16:28:05 »
в таком случае я заменю все \n на любой символ. А мне нужно только строки после которых идет череда пробелов.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #3 : 06 Октябрь 2017, 17:14:54 »
Код: Bash
  1. sed ':1;N;/\n\s\{4,\}/!{P;D};s/-.*-/-/;$!b1' file.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн fill.sa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #4 : 06 Октябрь 2017, 18:27:09 »
Спасибо, в целом работает. Ошибки бывают только если в начале файла есть другие данные(забыл упомянуть что они там могут быть), либо при сочетании с другими выражениями.
Но это я уже буду пробовать фильтровать другими командами.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #5 : 07 Октябрь 2017, 12:41:08 »
если в начале файла есть другие данные(забыл упомянуть что они там могут быть)
Извините что не развит скилл дистанционного чтения мыслей и снятия обета криворукости по интернет.
фильтровать другими командами.
необходимый эффект достигается использованием правильно составленного (на основе полных данных) регулярного выражения.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.214 секунд. Запросов: 24.