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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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

Оффлайн fill.sa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Вопрос к специалистам по sed и awk
« : 06 Октябрь 2017, 16: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

  • Старожил
  • *
  • Сообщений: 1109
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #1 : 06 Октябрь 2017, 17:19:51 »
все в разных строчка и я могу удалить либо просто символ строки \n либо только пробелы
ну так замените перенос строки каким-либо символом, а потом наоборот.
415243484c494e5558

Оффлайн fill.sa

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

Оффлайн Azure

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

Оффлайн fill.sa

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

Оффлайн Azure

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

 

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