The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"вопрос про удаление символа '\n'"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"вопрос про удаление символа '\n'"  +/
Сообщение от httpd (ok) on 16-Ноя-11, 23:48 
привет всем,

у меня пара задачек которые поставили меня в тупик, вроде простой регэксп нужен, но чет устал уже гуглить.

1.
имеется файл с таким содержимым:
$ cat file
one
two
three
four
five
six

надо чтобы получилось:
$ sed 'xxxxxxxxx' file
one two
three four
five six

те убрать перенос строки во всех нечетных строчках файла.
убрать во всех достаточно просто: sed ':a;N;$!ba;s/\n/ /g' file
а вот как это применить только к нечетным строчкам вопрос!

кто силен в SEDе ? :)
можно тоже самое и на awk/perl/tr  если кто знает буду рад выслушать.

2. при вот таком awk происходит перенос строки после вызова внешней команды system()

$ cat file | awk '{print "this line"; system("myproga "$1); print " values"}'
this line
myprogaresult values

те тут перед результатом команды system() вставляется символ новой строки, как сделать так чтобы перевода строки не было?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "вопрос про удаление символа '\n'"  +/
Сообщение от XAnder (ok) on 17-Ноя-11, 08:48 
> 1.

perl -ne 's/\n/ / unless $cnt++ % 2; print' file

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "вопрос про удаление символа '\n'"  +/
Сообщение от Andrey Mitrofanov on 17-Ноя-11, 09:56 
> убрать во всех достаточно просто: sed ':a;N;$!ba;s/\n/ /g' file
> а вот как это применить только к нечетным строчкам вопрос!
> кто силен в SEDе ? :)

Деццкииий сааад.

$ d() { cat << EOT; }
> one
> two
> three
> four
> five
> six
> $ d

one
two
three
four
five
six
$ d | sed -n 'N;s/\
/ /p'
one two
three four
five six
$ _

> можно тоже самое и на awk/perl/tr  если кто знает буду рад
> выслушать.

$ d | awk '{getline s;print $0" "s}'
one two
three four
five six
$ _

Одного tr для не хватит, всё равно нужен какой ни то sed, поэтому бессмысленно.

+bash:

$ d | while read l && read m; do echo "$l $m"; done
one two
three four
five six
$ _

Или лучше (не скажу, почему :-P ) -

$ d | while read l; do echo -n "$l"; read m && echo -n " $m"; echo; done
one two
three four
five six
$ _

> те тут перед результатом команды system() вставляется символ новой строки, как сделать
> так чтобы перевода строки не было?

Осспадя.... Ну, printf же, минимум.

Но man sed, man awk -- по любому до просветления.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "вопрос про удаление символа '\n'"  +/
Сообщение от httpd (ok) on 17-Ноя-11, 12:23 
>[оверквотинг удален]
> five six
> $ _
>> можно тоже самое и на awk/perl/tr  если кто знает буду рад
>> выслушать.
> $ d | awk '{getline s;print $0" "s}'
> one two
> three four
> five six
> $ _
> Но man sed, man awk -- по любому до просветления.

О биг сенкс,  но из этих вариантов только с AWK подходит, в SED ты используешь перевод строки, а мне нужен в 1 строчку регэксп.

кстати ни в манах ни в онлайн учебниках толком не описывается как составлять регэкспы, только типичные примеры, и если нужно что-то экзотическое, то найти проблема. Можешь посоветовать какие нибудь доки где ясно описано как писать регэкспы?

>> те тут перед результатом команды system() вставляется символ новой строки, как сделать
>> так чтобы перевода строки не было?
> Осспадя.... Ну, printf же, минимум.

погоди, как ты через printf преобразуешь вывод внешней команды? или может результат в переменную записать, а потом форматировать ее вывод?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "работать надо, заставлять себя"  +1 +/
Сообщение от Andrey Mitrofanov on 17-Ноя-11, 13:02 
> кстати ни в манах ни в онлайн учебниках толком не описывается как
> составлять регэкспы, только типичные примеры, и если нужно что-то экзотическое, то
> найти проблема. Можешь посоветовать какие нибудь доки где ясно описано как
> писать регэкспы?

Есть два рода людей -- которые умеют, и которые не умеют. Те, что умеют, уже не помнят и не знают, как сами не умели, и как научиться. А те, которые не умеют и _спрашивают, как бы чего-нибудь такого почитать, чтобы вот так вот сразу -- ах! -- и уметь, не умеют учиться.

Самый древний разговор -- слепого с глухим.

> погоди, как ты через printf преобразуешь вывод внешней команды?

За деньги. Или может.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "работать надо, заставлять себя"  +/
Сообщение от httpd (ok) on 18-Ноя-11, 01:02 
>[оверквотинг удален]
>> найти проблема. Можешь посоветовать какие нибудь доки где ясно описано как
>> писать регэкспы?
> Есть два рода людей -- которые умеют, и которые не умеют. Те,
> что умеют, уже не помнят и не знают, как сами не
> умели, и как научиться. А те, которые не умеют и _спрашивают,
> как бы чего-нибудь такого почитать, чтобы вот так вот сразу --
> ах! -- и уметь, не умеют учиться.
> Самый древний разговор -- слепого с глухим.
>> погоди, как ты через printf преобразуешь вывод внешней команды?
> За деньги. Или может.

понятно, спасибо и на том.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру