На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random, Модераторы разделов
-
Skyfery
- Сообщения: 1
Сообщение
Skyfery »
Задание такое: В заданном текстовом файле оставить не более 3 слов в каждой строке, остаток перенести в следующую строку.
Пробовал такую команду:
Код:
sed -E -i 's/\ /\n/3' ./text
Вот исходный файл:
1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
В результате выполнения скрипта получается такое:
1 2 3
4 5 6 7 8 9
9 8 7
6 5 4 3 2 1
Что нужно поправить в команде, что бы получилось так, как требуется по заданию?
-
Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Сообщение
Bizdelnick »
Я бы сделал так: s/\([^ ]\+ [^ ]\+ [^ ]\+ \)/\1\n/g
При условии, что слова всегда разделяются одним пробелом, конечно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще | в течение (часа)
новичок
нюанс
по умолчанию | приемлемо
проблема
пробовать
трафик |
-
SLEDopit
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Сообщение
SLEDopit »
либо чуть короче:
Skyfery писал(а): ↑08.06.2014 20:59
's/\ /\n/3'
3 здесь означает не "каждый третий", а "все после третьего, включая третий".
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.