sed - перенос строки

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
basov
рядовой
Сообщения: 39
Зарегистрирован: 2013-06-24 16:18:01

sed - перенос строки

Непрочитанное сообщение basov » 2016-08-08 13:43:32

Всем привет!
Вопрос у меня в следующем.
Мне надо вставить пустую строку в начало вывода файла.
пишу:

Код: Выделить всё

cat /path/to/file | sed '1 s/^/\n /;'
получаю

Код: Выделить всё

n Вывод файла
Что не так, подскажите пожалуйста?
Почему строку не переводит?

Отправлено спустя 1 час 26 минут 41 секунду:
понял что можно и без cat обойтись, однако проблема перевода строки все равно остается

Отправлено спустя 46 минут 37 секунд:
На данный момент у меня заработало только так:

Код: Выделить всё

sed "1 s/^/\^/" path/to/file | tr -s "^" "\n"

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
f_andrey
майор
Сообщения: 2639
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

sed - перенос строки

Непрочитанное сообщение f_andrey » 2016-08-08 13:47:31

Видимо кто то пытается юзать bsd sed а документацию читает к чему то иному

Код: Выделить всё

$ cat /path/to/file | sed '1 s/^/\              
> /;'
ну или gsed ваш друг например
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

basov
рядовой
Сообщения: 39
Зарегистрирован: 2013-06-24 16:18:01

sed - перенос строки

Непрочитанное сообщение basov » 2016-08-08 13:56:30

f_andrey писал(а):

Код: Выделить всё

$ cat /path/to/file | sed '1 s/^/\              
> /;'
не работает
пишет

Код: Выделить всё

unescaped newline inside substitute pattern

Аватара пользователя
f_andrey
майор
Сообщения: 2639
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

sed - перенос строки

Непрочитанное сообщение f_andrey » 2016-08-08 14:28:34

может таки уже прекратим играть в угадайку и вы нам назовёте систему и версию утилиты с которой пытаетесь работать?
Приведённый мной пример прекрасно работает в FreeBSD 10, а ваш первоначальный в линукс (gsed FreeBSD)
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

basov
рядовой
Сообщения: 39
Зарегистрирован: 2013-06-24 16:18:01

sed - перенос строки

Непрочитанное сообщение basov » 2016-08-08 14:36:57

OS freeBSD 9.3, sed - без понятия какой там в комплекте идет...
И как я уже написал, вариант с tr у меня сработал хорошо.

Аватара пользователя
f_andrey
майор
Сообщения: 2639
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

sed - перенос строки

Непрочитанное сообщение f_andrey » 2016-08-08 14:57:01

Код: Выделить всё

$ uname -a
FreeBSD fbsd-tbox.diphost.ru 9.3-RELEASE-p24 FreeBSD 9.3-RELEASE-p24 #0: Sat Aug 22 01:54:44 UTC 2015     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
$ cat testme.txt                                                                                         
1
2
3
$ cat testme.txt | sed '1 s/^/\
/;'

1
2
3
$ cat testme.txt | gsed '1 s/^/\n /;'                                                                    

 1
2
3
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

basov
рядовой
Сообщения: 39
Зарегистрирован: 2013-06-24 16:18:01

sed - перенос строки

Непрочитанное сообщение basov » 2016-08-08 15:05:50

Код: Выделить всё

uname -a 
FreeBSD test.anything.ru 9.3-RELEASE FreeBSD 9.3-RELEASE #0 r268512: Fri Jul 11 03:13:02 UTC 2014     root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  i386

$ cat test.txt
1
2
3

$ cat test.txt | sed '1 s/^/\
? /;' : unescaped newline inside substitute pattern
Отправлено спустя 2 минуты 4 секунды:
ах да...

Код: Выделить всё

$ cat test.txt | gsed '1 s/^/\n/;'
gsed: Command not found.

Аватара пользователя
f_andrey
майор
Сообщения: 2639
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

sed - перенос строки

Непрочитанное сообщение f_andrey » 2016-08-08 15:39:04

Чудеса да?

Код: Выделить всё

% cat testme.txt | sed '1 s/^/\\ 
/'

1
2
3

Код: Выделить всё

% cat testme.txt | gsed '1 s/^/\n /'                                                           
 1
2
3
basov писал(а):
gsed: Command not found.
Ну так его наверное надо поставить, если надо
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

basov
рядовой
Сообщения: 39
Зарегистрирован: 2013-06-24 16:18:01

sed - перенос строки

Непрочитанное сообщение basov » 2016-08-08 15:44:57

f_andrey писал(а):Чудеса да?

Код: Выделить всё

% cat testme.txt | sed '1 s/^/\\ 
/'

1
2
3
Чудеса. Заработало. Спасибо.
Забавно то, что только этот вариант я не попробовал пока разбирался. :smile:

Аватара пользователя
f_andrey
майор
Сообщения: 2639
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

sed - перенос строки

Непрочитанное сообщение f_andrey » 2016-08-08 15:53:16

Теперь домашние задание, с элементами телепатии, повторить чтоб работало как у меня в первый раз ;)
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308