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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Склеить строки sed  (Прочитано 10709 раз)

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

Оффлайн sergeyz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Склеить строки sed
« : 16 Августа 2012, 12:37:03 »
Нужно склеить две строки
line1
line2
чтобы получить line1line2

Что-то ни один вариант у меня не работает, ну например:
sed 's/\n//'
Бьюсь уже часа полтора над такой ерундой (

Подскажите, пожалуйста, работающий вариант.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Склеить строки sed
« Ответ #1 : 16 Августа 2012, 13:15:44 »
tr -d '\n'
Wars ~.o

Оффлайн sergeyz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Склеить строки sed
« Ответ #2 : 16 Августа 2012, 14:18:23 »
tr -d '\n'

Благодарствую! А все-таки, sed-у что мешает это сделать?

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Склеить строки sed
« Ответ #3 : 16 Августа 2012, 16:05:34 »
Благодарствую! А все-таки, sed-у что мешает это сделать?

А что тебе мешает почитать мануал по sed?

При выполнении sed  сначала обрезает конец строки и выполняет комманды одну за одной, поэтому, так, как написанно у тебя никогда не будет работать. Нужно что то типа sed ':a;N;$!ba;s/\n//g' file. Только не спрашивай что это, а то меня опять забнят тут. RTFM
При этом нужно учитывать, что размер внутреннего буфера у sed ораничен и для больших файлов лучше использовать tr, которому пофиг.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Склеить строки sed
« Ответ #4 : 17 Августа 2012, 10:13:44 »
А все-таки, sed-у что мешает это сделать?
sed построчный потоковый редактор. Поэтому строки в любом случае останутся строками. Изменения могут быть либо внутри строк, либо целиком в строках.

andrey_p

  • Гость
Re: Склеить строки sed
« Ответ #5 : 17 Августа 2012, 16:51:47 »
Цитировать
sed построчный потоковый редактор.
Ну это не совсем так. У sed-a достаточно возможностей для многострочной обработки. Другое дело, что эти возможности достаточно своеобразные, и сродни программированию на Брейнфаке.

Но вполне можно сделать все, что можно и на awk, и на perl. (Для развлечения, естественно, не для практики).

ЗЫ Так, болтовня в пятничный вечер. :)

adawdp

  • Гость
Re: Склеить строки sed
« Ответ #6 : 21 Февраля 2013, 12:06:48 »
–Здр.Все!
–Новую тему начинать совершенно не хочется, их тут и так много и часто темы очень похожи или близки по значимости и содержанию.
–Для решения вопроса по удалению из текста лишних пробелов, табуляции, переносов строк решил воспользоваться редактором Sed (в Windows использовал макрос в Word, но упорно пытаюсь применять здесь командную строку).
–Образец исходного текста:
(Нажмите, чтобы показать/скрыть)
–Текст после преобразований:
(Нажмите, чтобы показать/скрыть)
–Ничего умнее чем вот так,(поиск google использовал ;)) у меня не получилось.
sed -i -e 's/$/ /' 3pa3oK.txt | tr '\n' ' '       №1=добавляет пробел в конец сток;
sed -i -e ':a;N;$!ba;s/\n//g' 3pa3oK.txt   №2=объединяет строки;
sed -i 's/[ \t][ \t]*/\ /g' 3pa3oK.txt           №3=меняет пробелы и таб. на один пробел
sed -i 's/^[ \t]*//;s/[ \t]*$//' 3pa3oK.txt       №4=убирает пробелы и таб. конца и начала файла
–Можно коряво записать одной строкой:
sed -i -e 's/$/ /' 3pa3oK.txt | tr '\n' ' ';sed -i -e ':a;N;$!ba;s/\n//g' 3pa3oK.txt;sed -i 's/[ \t][ \t]*/\ /g' 3pa3oK.txt;sed -i 's/^[ \t]*//;s/[ \t]*$//' 3pa3oK.txt–Хотелось бы, конечно, как-то оптимизировать это всё для файла типа .txt (у меня в примере  3pa3oK.txt).
–Не буду приводить комбинации, которые у меня не получились, подскажите направление оптимизации, ну чтобы хотя бы 3pa3oK.txt писать один раз.

 

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