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

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

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

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

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

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

cat /path/to/file | sed '1 s/^/\n /;'

получаю

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

n Вывод файла

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

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

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

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

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

Аватара пользователя
f_andrey
майор
Сообщения: 2633
Зарегистрирован: 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 ваш друг например
Если ваша тема перенесена, то смотри 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
майор
Сообщения: 2633
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

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

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

может таки уже прекратим играть в угадайку и вы нам назовёте систему и версию утилиты с которой пытаетесь работать?
Приведённый мной пример прекрасно работает в FreeBSD 10, а ваш первоначальный в линукс (gsed FreeBSD)
Если ваша тема перенесена, то смотри 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
майор
Сообщения: 2633
Зарегистрирован: 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
Если ваша тема перенесена, то смотри 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
майор
Сообщения: 2633
Зарегистрирован: 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.

Ну так его наверное надо поставить, если надо
Если ваша тема перенесена, то смотри 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
майор
Сообщения: 2633
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

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

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

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


Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя