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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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

Оффлайн fill.sa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Вопрос к специалистам по 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 либо только пробелы.
В общем гуру помогите решить задачу.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6754
  • 20% Cooler
    • Просмотр профиля
Re: Вопрос к специалистам по sed и awk
« Ответ #1 : 06 Октября 2017, 16:19:51 »
все в разных строчка и я могу удалить либо просто символ строки \n либо только пробелы
ну так замените перенос строки каким-либо символом, а потом наоборот.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн fill.sa

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

Оффлайн Azure

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

Оффлайн fill.sa

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

Оффлайн Azure

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

 

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