sed, помогите удалить лишние переносы (окружение: UnixUtils)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

sed, помогите удалить лишние переносы

Сообщение uptime »

Исходный файл:

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

0.170
0.084

1.360
0.467

3.400
0.784

7.820
0.417

14.950
0.300

Хотелось бы получить:

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

0.170 0.084
1.360 0.467
3.400 0.784
7.820 0.417
14.950 0.300

туплю :blush:
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: sed, помогите удалить лишние переносы

Сообщение watashiwa_daredeska »

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

sed -n '/^\s*$/ba;H;$ba;b;:a;{x;s/^\n*//;s/\n/ /g;p}'
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: sed, помогите удалить лишние переносы

Сообщение t.t »

tr '\n' ' ' | sed 's/ /\n'
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Encore
Сообщения: 656
Статус: loading..............
ОС: Debian

Re: sed, помогите удалить лишние переносы

Сообщение Encore »

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

sed '/^$/d'

upd. что й то я не в дугу совсем :wacko: про переносы не прочитал..

upd2.

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

$ cat txt
0.170
0.084

1.360
0.467

3.400
0.784

7.820
0.417

14.950
0.300
$ cat txt |sed 'N;s/\n//'
0.170    0.084
    1.360
0.467
3.400    0.784
    7.820
0.417
14.950    0.300

что-то тоже фигня получается...
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: sed, помогите удалить лишние переносы

Сообщение watashiwa_daredeska »

t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'
1. Зачем обратно менять все пробелы на \n? :) Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.

watashiwa_darede... писал(а):
24.06.2010 19:26
Видимо, там должно быть 2 пробела.
И таки да, 's/ /\n/g', а не так, как ты написал.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: sed, помогите удалить лишние переносы

Сообщение t.t »

watashiwa_daredeska писал(а):
24.06.2010 19:26
t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'
1. Зачем обратно менять все пробелы на \n? :) Видимо, там должно быть 2 пробела.
2. Так это ж sed весь файл в память засосет.

watashiwa_darede... писал(а):
24.06.2010 19:26
Видимо, там должно быть 2 пробела.
И таки да, 's/ /\n/g', а не так, как ты написал.
Там и было два пробела. Забыл тег code и движок их заменил на один.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: sed, помогите удалить лишние переносы

Сообщение watashiwa_daredeska »

t.t писал(а):
24.06.2010 19:54
Там и было два пробела. Забыл тег code и движок их заменил на один.
Да, я уже заметил, когда сам постил. Вторая поправка была про /g, иначе sed заменит только первое вхождение.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: sed, помогите удалить лишние переносы

Сообщение t.t »

watashiwa_daredeska писал(а):
24.06.2010 19:57
t.t писал(а):
24.06.2010 19:54
Там и было два пробела. Забыл тег code и движок их заменил на один.
Да, я уже заметил, когда сам постил. Вторая поправка была про /g, иначе sed заменит только первое вхождение.
Да, спасибо. Тоже пропустил, как и code.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh »

sed '/^ /d;N;s/ \n//'
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: sed, помогите удалить лишние переносы

Сообщение t.t »

Nazyvaemykh писал(а):
24.06.2010 20:27
sed '/^ /d;N;s/ \n//'
Разве там есть пробелы в начале и в конце строк?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh »

У меня в браузере отображается с пробелами (с точностью до пробелов решение правильное).

Я лишь хотел показать, что относительно простое решение можно получить использованием sed-команды ‘N’.

¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

watashiwa_daredeska писал(а):
24.06.2010 19:10

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

sed -n '/^\s*$/ba;H;$ba;b;:a;{x;s/^\n*//;s/\n/ /g;p}'


Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300

не совсем то
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'


так не работала. Мой вариант:

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

tr "\n" " " < qqq | sed "s/ /\n/" > www

на выходе, похоже только добавилось пробелов в начале строки

Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random »

uptime писал(а):
25.06.2010 12:42
t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'

так не работала. Мой вариант:

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

tr "\n" " " < qqq | sed "s/ /\n/" > www


В варианте t.t между / и / _два_ пробела, просто движок отображает один. Вы, видимо, скопипастили с одним. Поэтому у вас и не работает.
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

Nazyvaemykh писал(а):
24.06.2010 20:27
sed '/^ /d;N;s/ \n//'


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

sed "/^ /d;N;s/ \n//" qqq > www


нед ((

Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: sed, помогите удалить лишние переносы

Сообщение t.t »

/dev/random писал(а):
25.06.2010 12:46
uptime писал(а):
25.06.2010 12:42
t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'
так не работала. Мой вариант:

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

tr "\n" " " < qqq | sed "s/ /\n/" > www

В варианте t.t между / и / _два_ пробела, просто движок отображает один. Вы, видимо, скопипастили с одним. Поэтому у вас и не работает.
Более того: мы с wd уже обсуждали как мой недосмотр, так и правильный вариант — не только с двойным пробелом, но и с g:

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

tr '\n' ' ' | sed 's/  /\n/g'
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: sed, помогите удалить лишние переносы

Сообщение watashiwa_daredeska »

uptime писал(а):
25.06.2010 12:36
не совсем то
Загрузите кусок файла в виде приложения (attachment), а то такое чувство, что там куча каких-то странных невидимых символов.


Если в файле есть trailing whitespaces, то приведенный мной скрипт работает коряво:

Shell

$ sed -n 'l' in.txt 0.170 $ 0.084 $ $ 1.360 $ 0.467 $ $ 3.400 $ 0.784 $ $ 7.820 $ 0.417 $ $ 14.950 $ 0.300$ $ sed -n '/^\s*$/ba;H;$ba;b;:a;{x;s/^\n*//;s/\n/ /g;p}' in.txt 0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300


Если его слегка подрихтовать на этот счет, то:

Shell

$ sed -n 's/\s*$//;/^$/ba;H;$ba;b;:a;{x;s/^\n*//;s/\n/ /g;p}' in.txt 0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300

Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

t.t писал(а):
25.06.2010 13:20
/dev/random писал(а):
25.06.2010 12:46
uptime писал(а):
25.06.2010 12:42
t.t писал(а):
24.06.2010 19:13
tr '\n' ' ' | sed 's/ /\n'
так не работала. Мой вариант:

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

tr "\n" " " < qqq | sed "s/ /\n/" > www

В варианте t.t между / и / _два_ пробела, просто движок отображает один. Вы, видимо, скопипастили с одним. Поэтому у вас и не работает.
Более того: мы с wd уже обсуждали как мой недосмотр, так и правильный вариант — не только с двойным пробелом, но и с g:

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

tr '\n' ' ' | sed 's/  /\n/g'



уже лучше. Но там какая то аццкая смесь пробелов и табов. Во избежание порчи прикрепляю исходный файл. (Переименовал в .txt)

мой последний вариант:

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

tr "\r\n" " " < qqq > eee
sed "s/      /\n/g" eee > www

выдаёт такое:

Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300
У вас нет необходимых прав для просмотра вложений в этом сообщении.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random »

Оу... Так это в винде, что ли? Там CRLF!

Upd: блин, торможу. Сказано же, UnxUtils. Значит, да, в винде.
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: sed, помогите удалить лишние переносы

Сообщение Subj »

Я бы примерно так сделал:

cat file | sed -n "/[0-9]/p" | while read i1; read i2; do echo $i1 $i2 ; done


ну или

cat file | sed -n 's/[\t ]\+//;/[0-9]/p' | sed '$!N;s/\n/ /'

Насчет венды - хз )
Building better software with Ada
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

/dev/random писал(а):
25.06.2010 15:23
Upd: блин, торможу.

вот и я. Видимо, сезон наступил такой ))
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

Subj писал(а):
25.06.2010 15:23
Я бы примерно так сделал:

cat file | sed -n "/[0-9]/p" | while read i1; read i2; do echo $i1 $i2 ; done

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

'while' is not recognized as an internal or external command,
operable program or batch file.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: sed, помогите удалить лишние переносы

Сообщение /dev/random »

uptime писал(а):
25.06.2010 16:02

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

'while' is not recognized as an internal or external command,
operable program or batch file.

UnxUtils содержит sh.exe, в нём что, тоже нет while?
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

/dev/random писал(а):
25.06.2010 16:06
uptime писал(а):
25.06.2010 16:02

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

'while' is not recognized as an internal or external command,
 operable program or batch file.

UnxUtils содержит sh.exe, в нём что, тоже нет while?


ура! товарищи! яйца sh подействовал ))
всех откликнувшихся готов угостить :drinks:
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: sed, помогите удалить лишние переносы

Сообщение Subj »

uptime писал(а):
25.06.2010 15:56
/dev/random писал(а):
25.06.2010 15:23
Upd: блин, торможу.

вот и я. Видимо, сезон наступил такой ))


CR='\015'
tr -d $CR < file

и вуаля, формат уже не DOS :)
Building better software with Ada
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh »

Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):

sed '/^[^0-9]/d;N;s/\r\n/ /;s/\t//g'
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

Nazyvaemykh писал(а):
25.06.2010 17:41
Ну, вот поправленный немного вариант чисто с sed (пробовал только в GNU\Linux окружении, с приведенным примером работает правильно):

sed '/^[^0-9]/d;N;s/\r\n/ /;s/\t//g'


Заменил одинарные кавычки на двойные. Результат:

Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: sed, помогите удалить лишние переносы

Сообщение drBatty »

uptime писал(а):
28.06.2010 11:39
Заменил одинарные кавычки на двойные. Результат:

попробуйте записать скрипт внутрь текстового файла (вообще без кавычек), а потом
sed.exe -f script.sed
должно получится - внутри текстового файла никакие кавычки не действуют как кавычки.

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

/^[^0-9]/d
N
s/\r\n/ /
s/\t//g


и ещё, любой пробельный файл в sed называется '\s', а их смесь - '\s\+'

я-бы написал так

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

/^\s*$/d
N
s/\n/~/
s/^\s*//
s/\s*$//
s/\s*~\s*/ /


sed -f qqq.sed qqq.txt

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300


а большой файл мне чего-то не скачать - SeaMonkey его показывает :(
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: sed, помогите удалить лишние переносы

Сообщение Nazyvaemykh »

drBatty, интересно.
Про \s в info sed что-то не упоминается даже. А вот \t — это GNU-тое расширение, может быть, дело в этом?
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: sed, помогите удалить лишние переносы

Сообщение uptime »

drBatty писал(а):
29.06.2010 06:11
...

я-бы написал так

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

/^\s*$/d
 N
 s/\n/~/
 s/^\s*//
 s/\s*$//
 s/\s*~\s*/ /

...

Сделал как советовали, через файл сценария sed. Результат обнадёживает:

Код:

0.170 0.084 1.360 0.467 3.400 0.784 7.820 0.417 14.950 0.300 0.255 0.132 1.380 0.473 3.450 0.784 8.625 0.417 15.525 0.300 0.308 0.138 1.445 0.493 3.499 0.784 8.970 0.408 15.926 0.300 0.340 0.148 1.458 0.496 3.570 0.817 9.200 0.383 16.675 0.300 0.364 0.156 1.530 0.515 3.622 0.817 9.239 0.381 16.741 0.300 0.379 0.165 1.615 0.522 4.140 0.817 9.775 0.360 17.000 0.300 0.410 0.185 1.628 0.524 4.171 0.817 10.200 0.358 17.250 0.300 0.425 0.195 1.643 0.530 4.370 0.817 10.221 0.358 17.463 0.296 0.431 0.197 1.700 0.554 4.830 0.817 10.350 0.357 17.825 0.288 0.510 0.220 1.725 0.564 4.930 0.752 10.625 0.326 18.400 0.272 0.595 0.228 1.785 0.587 5.060 0.677 10.694 0.319 18.700 0.271 0.606 0.232 1.870 0.587 5.087 0.654 10.803 0.307 19.550 0.269 0.638 0.243 1.899 0.587 5.100 0.643 10.925 0.306 20.675 0.265 0.680 0.257 1.901 0.588 5.276 0.516 11.050 0.303 20.700 0.265 0.695 0.264 1.927 0.600 5.290 0.507 11.352 0.294 21.274 0.257 0.711 0.271 1.955 0.661 5.316 0.504 11.500 0.294 21.456 0.255 0.754 0.291 2.040 0.750 5.355 0.499 11.771 0.294 23.000 0.255 0.773 0.298 2.125 0.813 5.520 0.480 11.900 0.294 25.300 0.255 0.782 0.301 2.151 0.818 5.750 0.454 12.075 0.294 27.321 0.252 0.784 0.302 2.210 0.830 5.780 0.449 12.232 0.294 28.750 0.250 0.850 0.322 2.380 0.830 5.849 0.437 12.272 0.295 29.468 0.249 0.935 0.367 2.415 0.830 5.950 0.419 12.325 0.297 32.200 0.247 1.026 0.367 2.465 0.830 6.095 0.396 12.342 0.297 35.650 0.245 1.041 0.370 2.530 0.830 6.213 0.390 12.374 0.297 36.628 0.244 1.105 0.384 2.677 0.830 6.325 0.409 12.504 0.297 37.950 0.244 1.190 0.456 2.720 0.830 6.342 0.412 12.650 0.299 1.275 0.456 2.805 0.830 6.375 0.417 12.686 0.300 1.295 0.456 2.975 0.830 6.670 0.417 12.750 0.300 1.315 0.456 2.990 0.830 7.245 0.417 13.225 0.300 1.327 0.456 3.060 0.816 7.475 0.417 13.800 0.300 1.350 0.458 3.105 0.807 7.721 0.417 13.829 0.300
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали: