Страница 1 из 1

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

Добавлено: 2016-08-08 13:43:32
basov
Всем привет!
Вопрос у меня в следующем.
Мне надо вставить пустую строку в начало вывода файла.
пишу:

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

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

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

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

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

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

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

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

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

Добавлено: 2016-08-08 13:47:31
f_andrey
Видимо кто то пытается юзать bsd sed а документацию читает к чему то иному

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

$ cat /path/to/file | sed '1 s/^/\              
> /;'
ну или gsed ваш друг например

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

Добавлено: 2016-08-08 13:56:30
basov
f_andrey писал(а):

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

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

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

unescaped newline inside substitute pattern

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

Добавлено: 2016-08-08 14:28:34
f_andrey
может таки уже прекратим играть в угадайку и вы нам назовёте систему и версию утилиты с которой пытаетесь работать?
Приведённый мной пример прекрасно работает в FreeBSD 10, а ваш первоначальный в линукс (gsed FreeBSD)

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

Добавлено: 2016-08-08 14:36:57
basov
OS freeBSD 9.3, sed - без понятия какой там в комплекте идет...
И как я уже написал, вариант с tr у меня сработал хорошо.

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

Добавлено: 2016-08-08 14:57:01
f_andrey

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

$ 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

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

Добавлено: 2016-08-08 15:05:50
basov

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

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.

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

Добавлено: 2016-08-08 15:39:04
f_andrey
Чудеса да?

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

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

1
2
3

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

% cat testme.txt | gsed '1 s/^/\n /'                                                           
 1
2
3
basov писал(а):
gsed: Command not found.
Ну так его наверное надо поставить, если надо

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

Добавлено: 2016-08-08 15:44:57
basov
f_andrey писал(а):Чудеса да?

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

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

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

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

Добавлено: 2016-08-08 15:53:16
f_andrey
Теперь домашние задание, с элементами телепатии, повторить чтоб работало как у меня в первый раз ;)