Как удалить 'перевод строки'?, Chainikk, 17-Май-10, 15:32 [смотреть все]Есть большой файл с данными in.txt, скачивается на сервер каждые 15 минут. Скрипт на csh вытаскивает из него только нужные 3 строки - 1-ую, 3-ю и 12-ю, и записывает в файл out.txt:#!/bin/csh -x sed -n -e '1p' -e '3p' -e '12p' in.txt >> out.txt А вот как сделать, чтоб эти строки записывались подряд все в одну, а не писались одна под другой, то есть как удалять символ "перевода строки" в конце каждой? Никак не могу добиться, будучи непрофессионалом:-(, буду оччень благодарна за помощь.
|
- Как удалить 'перевод строки'?, Andrey Mitrofanov, 15:43 , 17-Май-10 (1) +1
>Скрипт на csh вытаскивает из него только нужные 3 строки - 1-ую,Вообще говоря, скрипт практически на sed-е. >3-ю и 12-ю, >А вот как сделать, чтоб эти строки записывались подряд все в одну, $ seq 1 5 1 2 3 4 5 $ seq 1 5|sed -n 'N;N;s/\ //g;p;q' 123 $ _ А, не, не то... $ seq 1 15|sed -n '1H;3H;12{H;g;s/\ //g;p;q}' 1312 $ _
- Как удалить 'перевод строки'?, Chainikk, 16:21 , 17-Май-10 (2)
> >Вообще говоря, скрипт практически на sed-е. >Ну да, в общем:-) > >$ seq 1 15|sed -n '1H;3H;12{H;g;s/\ >//g;p;q}' >1312 >$ _ Спасибо. Попробовала. Пока не очень получилось... Не поняла, а куда тут добавлять имя файла, из которого считывать, и в который записывать. Попробовала #!/bin/csh -x sed -n '1H;3H;12{H;g;s/\ //g;p;q}' in.txt >> out.txt запускаю на выполнение этот файл а мне в ответ - sed: -e expression #1, char 15: Unterminated `s' command
- Как удалить 'перевод строки'?, Andrey Mitrofanov, 17:39 , 17-Май-10 (3)
может, так? sed -n '1h;3H;12{H;g;s/\n//g;p;q}' <in.txt >>out.txt
- Как удалить 'перевод строки'?, Chainikk, 18:28 , 17-Май-10 (4)
>может, так? >sed -n '1h;3H;12{H;g;s/\n//g;p;q}' <in.txt >>out.txtТак тоже не удаляет:-( Наша вот еще: tr -d '\n' Тока пока не понимаю куда его после sed'a впихнуть...
- Как удалить 'перевод строки'?, phpcoder, 06:53 , 18-Май-10 (9)
>$ seq 1 5 >1 >2 >3 >4 >5 >$ seq 1 5|sed -n 'N;N;s/\ >//g;p;q' >123 Есть способ проще (с) seq 1 5 | paste -s -d ''
- Как удалить 'перевод строки'?, Андрей, 21:40 , 17-Май-10 (7)
$ seq 1 5 1 2 3 4 5$ seq 1 5 | xargs 1 2 3 4 5 для вашего случая: sed -n -e '1p' -e '3p' -e '12p' in.txt | xargs > out.txt
- Как удалить 'перевод строки'?, Аноним, 22:43 , 17-Май-10 (8)
> | xargsЕМНИП, у xargs ограничение на размер строки - ARG_MAX лучше использовать команду `y'. sed -n -e 'y/\n//' -e '1p' -e '3p' -e '12p' in.txt >> out.txt тут можно сэкономить ресурсы, если не считывать весь файл, а остановить чтение файла после 12-ой строки: -e '12q'. Имеет смысл только с файлами в несколько мегабайт или на медленных дисках.
- Ура! Удалила 'перевод строки'! :-), Chainikk, 15:08 , 19-Май-10 (10)
Спасибо огромное всем, все получилось!! Перебрала ВСЕ указанные Вами варианты, в результате сделала команду:sed -n -e '1p' -e '3p' -e '12q' in.txt | xargs >>out.txt Идея останавливать чтение файла после 12 строки мне очень понравилась, сделала -e '12q'. Нечего сервер зря гонять, у него и так задач много:-) А то что у xargs ограничение на размер строки, это мне оказалось не критично. Все читается. Теперь получается отличный файл с данными! Данные поступают каждые 15 минут, и за пару месяцев большой файл бы накапливался, длинный как кишка, а так в 3 раза короче. Люблю когда все элегантно:-)!! - Удаление 'перевода строки', Chainikk, 16:51 , 19-Май-10 (11)
Все-таки окончательно сделала: sed -n -e '1p' -e '3p' -e '12p' in.txt | xargs > out.txt
|