The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"sed"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 05-Июл-03, 07:43  (MSK)
cat file | sed 's/\n/,/'

Хочу удалить все символы новых строк заменив их на запятые, удлить все пробелы и все символы табуляции.
Но тут нельзя применяnь newline каким образом можно реализовать это?
Символ табуляции как будет?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

  • sed, denn, 17:56 , 05-Июл-03, (1)
    • sed, A Clockwork Orange, 18:41 , 05-Июл-03, (2)
      • sed, denn, 18:46 , 05-Июл-03, (3)
        • sed, A Clockwork Orange, 19:13 , 05-Июл-03, (4)
          • sed, denn, 19:04 , 06-Июл-03, (5)
  • sed, denn, 11:58 , 07-Июл-03, (6)
  • sed, pablo, 13:09 , 07-Июл-03, (7)
    • sed, A Clockwork Orange, 17:48 , 07-Июл-03, (8)
      • sed, denn, 18:00 , 07-Июл-03, (9)
        • sed, A Clockwork Orange, 19:24 , 07-Июл-03, (10)
          • sed, denn, 19:54 , 07-Июл-03, (11)
            • sed, A Clockwork Orange, 20:11 , 07-Июл-03, (12)
              • sed, sas, 06:24 , 10-Июл-03, (20)
                • sed, sas, 06:28 , 10-Июл-03, (21)
  • sed, LS, 04:36 , 08-Июл-03, (13)
    • sed, LS, 04:39 , 08-Июл-03, (14)
      • sed, A Clockwork Orange, 08:55 , 08-Июл-03, (15)
        • sed, lavr, 15:30 , 08-Июл-03, (16)
          • sed, A Clockwork Orange, 15:41 , 08-Июл-03, (17)
  • sed, poor bugger, 16:00 , 08-Июл-03, (18)
    • sed, A Clockwork Orange, 20:00 , 08-Июл-03, (19)

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

1. "sed"
Сообщение от denn Искать по авторуВ закладки on 05-Июл-03, 17:56  (MSK)
>cat file | sed 's/\n/,/'
>
>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>пробелы и все символы табуляции.
>Но тут нельзя применяnь newline каким образом можно реализовать это?
>Символ табуляции как будет?

попробуй
cat file1 | sed 's/\n/,/g' > file2
cat file1 | sed 's/\t/_/g' > file2 (\t -символ табуляции)
den

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 05-Июл-03, 18:41  (MSK)
>>cat file | sed 's/\n/,/'
>>
>>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>>пробелы и все символы табуляции.
>>Но тут нельзя применяnь newline каким образом можно реализовать это?
>>Символ табуляции как будет?
>
>попробуй
>cat file1 | sed 's/\n/,/g' > file2
>cat file1 | sed 's/\t/_/g' > file2 (\t -символ табуляции)
>den


Нет это неработает.
Делов том чтов руководстве написано что ту нельзя ставить символ новой строки.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "sed"
Сообщение от denn Искать по авторуВ закладки on 05-Июл-03, 18:46  (MSK)
>>>cat file | sed 's/\n/,/'
>>>
>>>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>>>пробелы и все символы табуляции.
>>>Но тут нельзя применяnь newline каким образом можно реализовать это?
>>>Символ табуляции как будет?
>>
>>попробуй
>>cat file1 | sed 's/\n/,/g' > file2
>>cat file1 | sed 's/\t/_/g' > file2 (\t -символ табуляции)
>>den
>
>
>Нет это неработает.
>Делов том чтов руководстве написано что ту нельзя ставить символ новой строки.
>
табуляция тоже не работает?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 05-Июл-03, 19:13  (MSK)
sed 's/\t//g'
Такая вещь удаляет не табуляцию а все буквы t

По большому счету мне надо блок из нескольких строк превартить в одну строку, где перед началом "бывших" строк будут запятые

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "sed"
Сообщение от denn Искать по авторуВ закладки on 06-Июл-03, 19:04  (MSK)
> sed 's/\t//g'
>Такая вещь удаляет не табуляцию а все буквы t
>
>По большому счету мне надо блок из нескольких строк превартить в одну
>строку, где перед началом "бывших" строк будут запятые

завтра отпишу поточнее (книга по sed на работе есть).

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "sed"
Сообщение от denn emailИскать по авторуВ закладки on 07-Июл-03, 11:58  (MSK)
>cat file | sed 's/\n/,/'
>
>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>пробелы и все символы табуляции.
>Но тут нельзя применяnь newline каким образом можно реализовать это?
>Символ табуляции как будет?

предлагаю cat file1 | tr '\n' ','| tr '[:space:]' '_'

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "sed"
Сообщение от pablo emailИскать по авторуВ закладки on 07-Июл-03, 13:09  (MSK)
>cat file | sed 's/\n/,/'
>
>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>пробелы и все символы табуляции.
>Но тут нельзя применяnь newline каким образом можно реализовать это?
>Символ табуляции как будет?
Если не критично именно с помощью sed то посмотри на tr.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 07-Июл-03, 17:48  (MSK)
Да это похоже на тербуемое,
воттакой вопрос все хорошо если нужно один блок в строку, а если есть блоки разделенные пустыми строками, и нужно каждый блок в строку преобразовать
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "sed"
Сообщение от denn emailИскать по авторуВ закладки on 07-Июл-03, 18:00  (MSK)
>Да это похоже на тербуемое,
>воттакой вопрос все хорошо если нужно один блок в строку, а если
>есть блоки разделенные пустыми строками, и нужно каждый блок в строку
>преобразовать
попробуй для начала разделить блоку эдаким условным знаком

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 07-Июл-03, 19:24  (MSK)
>>Да это похоже на тербуемое,
>>воттакой вопрос все хорошо если нужно один блок в строку, а если
>>есть блоки разделенные пустыми строками, и нужно каждый блок в строку
>>преобразовать
>попробуй для начала разделить блоку эдаким условным знаком


cat files | sed '/^$/s/$/\!/'

Вот заменил везде пусты строки на бэнг, и как теперь что бы блоки между ним сливались по строчно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "sed"
Сообщение от denn emailИскать по авторуВ закладки on 07-Июл-03, 19:54  (MSK)
>>>Да это похоже на тербуемое,
>>>воттакой вопрос все хорошо если нужно один блок в строку, а если
>>>есть блоки разделенные пустыми строками, и нужно каждый блок в строку
>>>преобразовать
>>попробуй для начала разделить блоку эдаким условным знаком
>
>
>cat files | sed '/^$/s/$/\!/'
>
>Вот заменил везде пусты строки на бэнг, и как теперь что бы
>блоки между ним сливались по строчно?

ну, по идее, теперь меняй tr`ом - он не должен нарушить блочность

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 07-Июл-03, 20:11  (MSK)
Да пробовал уже все сливается в одно длинющее прделожение!!!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

20. "sed"
Сообщение от sas emailИскать по авторуВ закладки on 10-Июл-03, 06:24  (MSK)
>Да пробовал уже все сливается в одно длинющее прделожение!!!

$ cat >txt <<-EOF
Line 1-1
Line 1-2
Line 1-3

Line 2-1
Line 2-2
Line 2-3

Line 3-1
Line 3-2
EOF

$ cat >transformer.awk <<-EOF
#!/sw/bin/awk -f

BEGIN {
RS="\n[[:space:]]*\n"
DELIM=", "
}
{
gsub( /\n/, ", " )
print
# --- if you need to insert empty line uncomment line below
#print ""
}
EOF

$ chmod 700 ./transformer.awk
$ ./transformer.awk txt

Результаты должны бать примерно такими:

Line 1-1, Line 1-2, Line 1-3
Line 2-1, Line 2-2, Line 2-3
Line 3-1, Line 3-2

Успехов
--- sas

  Рекомендовать в FAQ | Cообщить модератору | Наверх

21. "sed"
Сообщение от sas emailИскать по авторуВ закладки on 10-Июл-03, 06:28  (MSK)
>>Да пробовал уже все сливается в одно длинющее прделожение!!!
>
>$ cat >txt <<-EOF
>Line 1-1
>Line 1-2
>Line 1-3
>
>Line 2-1
>Line 2-2
>Line 2-3
>
>Line 3-1
>Line 3-2
>EOF
>
>$ cat >transformer.awk <<-EOF
>#!/sw/bin/awk -f
>
>BEGIN {
> RS="\n[[:space:]]*\n"
> DELIM=", "
>}
>{
> gsub( /\n/, ", " )
> print
> # --- if you need to insert empty line uncomment line
>below
> #print ""
>}
>EOF
>
>$ chmod 700 ./transformer.awk
>$ ./transformer.awk txt
>
>Результаты должны бать примерно такими:
>
>Line 1-1, Line 1-2, Line 1-3
>Line 2-1, Line 2-2, Line 2-3
>Line 3-1, Line 3-2
>
>Успехов
>--- sas

Sorry, должно быть:

gsub( /\n/, DELIM )

Для того чтобы результаты пошли в файл

./transformer.awk txt >res.txt

Успехов
--- sas

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "sed"
Сообщение от LS emailИскать по авторуВ закладки on 08-Июл-03, 04:36  (MSK)
>cat file | sed 's/\n/,/'
>
>Хочу удалить все символы новых строк заменив их на запятые, удлить все
>пробелы и все символы табуляции.
>Но тут нельзя применяnь newline каким образом можно реализовать это?
>Символ табуляции как будет?


[syslha@localhost syslha]$ cd temp
[syslha@localhost temp]$ echo line1>sed.test
[syslha@localhost temp]$ echo line2>>sed.test
[syslha@localhost temp]$ echo line3>>sed.test
[syslha@localhost temp]$ echo line4>>sed.test
[syslha@localhost temp]$ echo line5>>sed.test
[syslha@localhost temp]$ cat sed.test
line1
line2
line3
line4
line5
[syslha@localhost temp]$ а на фиг sed? - все равно скрипт
bash: а: command not found
[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo $res
line1, line2, line3, line4, line5,
[syslha@localhost temp]$ нафиг нам последняя запятая?
bash: нафиг: command not found
[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo ${res:0:$((${#res}-1))}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "sed"
Сообщение от LS emailИскать по авторуВ закладки on 08-Июл-03, 04:39  (MSK)
>[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo ${res:0:$((${#res}-1))}

не все забрал в буфер - вот продолжение:

line1, line2, line3, line4, line5
[syslha@localhost temp]$

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 08-Июл-03, 08:55  (MSK)
>>[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo ${res:0:$((${#res}-1))}
>
>не все забрал в буфер - вот продолжение:
>
>line1, line2, line3, line4, line5
>[syslha@localhost temp]$


Здорово, а если эти блоки разделены пустыми строками и нужно поболчно в строки писать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "sed"
Сообщение от lavr emailИскать по авторуВ закладки on 08-Июл-03, 15:30  (MSK)
>>>[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo ${res:0:$((${#res}-1))}
>>
>>не все забрал в буфер - вот продолжение:
>>
>>line1, line2, line3, line4, line5
>>[syslha@localhost temp]$
>
>
>Здорово, а если эти блоки разделены пустыми строками и нужно поболчно в
>строки писать?

так вырезай сперва пустые строки ^\n - все это можно сделать используя
sed или sed + awk/tr, но гораздо проще на perl'е

ну и кстати про sed:

http://www.faqs.org/faqs/editor-faq/sed/

  Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 08-Июл-03, 15:41  (MSK)
>>>>[syslha@localhost temp]$ res=`cat sed.test|while read line; do echo "$line,";done`; echo ${res:0:$((${#res}-1))}
>>>
>>>не все забрал в буфер - вот продолжение:
>>>
>>>line1, line2, line3, line4, line5
>>>[syslha@localhost temp]$
>>
>>
>>Здорово, а если эти блоки разделены пустыми строками и нужно поболчно в
>>строки писать?
>
>так вырезай сперва пустые строки ^\n - все это можно сделать используя
>
>sed или sed + awk/tr, но гораздо проще на perl'е
>
>ну и кстати про sed:
>
>http://www.faqs.org/faqs/editor-faq/sed/


Большое спасибо Лавр за факи, я читал, и весь прикол в том что все желание удалить \n не имеет эффекта, уощущение что нет в тексте из, абсурд , а удалять пустые строки нужно в последний помент когда каждый блок сложиться в строку, сейчас они как резделители.
Но пока все неудачно, блок в строку научились делать и средствами tr и shell теперь как бы это сделать для каждого блока

  Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "sed"
Сообщение от poor bugger Искать по авторуВ закладки on 08-Июл-03, 16:00  (MSK)
sed не годится. т.е. в принципе можно, используя метки и команду N, но это неэффективно. проблема в том, что N имеет фичу - по достижении конца файла скрипт просто обламывается без выполнения оставшихся команд, поэтому подстановку приходится делать после каждого N с самого начала файла.

awk

или perl

  Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "sed"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 08-Июл-03, 20:00  (MSK)
#!/bin/sh

cat detail
while read line
   do
       if [$line='^\n']
        then
                 echo "\n"
        else
                 echo -n "$line,"
       fi
done

Вот такое сделал
Должно быть , если пустая строка то должна остаться если нет то блок из строк сливается в одну строку
Но не получается , файл как был так и остается!

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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