The OpenNET Project / Index page

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

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

"Помогите разобратся с awk"  
Сообщение от Kreept email(ok) on 20-Июн-07, 19:42 
Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print одинарные кавычки?
awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file

"/" - не помог
Спасибо за любую помощь.  

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Помогите разобратся с awk"  
Сообщение от NuINu (??) on 21-Июн-07, 09:37 
>Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print
>одинарные кавычки?
>awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file
>
>"/" - не помог
>Спасибо за любую помощь.

gawk  'BEGIN {print " \047Name\047--------------"} {print $1 "\t" $7}' file

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите разобратся с awk"  
Сообщение от Kreept email(ok) on 21-Июн-07, 11:11 
>>Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print
>>одинарные кавычки?
>>awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file
>>
>>"/" - не помог
>>Спасибо за любую помощь.
>
>gawk  'BEGIN {print " \047Name\047--------------"} {print $1 "\t" $7}' file


Спасибо!  

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите разобратся с awk"  
Сообщение от madskull (??) on 26-Июн-07, 10:58 
>Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print
>одинарные кавычки?
>awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file
>
>"/" - не помог
>Спасибо за любую помощь.

если используется bash, то можно нагородить и что-то вроде этого:
awk -F: 'BEGIN {print " '"'"'Name'"'"'--------------"} {print $1 "\t" $7}' file

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Помогите разобратся с awk"  
Сообщение от zbl on 26-Июн-07, 15:19 
>Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print
>одинарные кавычки?
>awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file
>
>"/" - не помог
В bash между ' ' никак не может стоять ', даже экранировать его слешем нельзя.
Для вывода ' в bash предлагается использовать "".
Но тогда придётся писать
awk -F: "BEGIN {print \" 'Name'--------------\"} {print $1 \"\t\" $7}" file
что мне лично не нравится.
Если помнить список специальных последовательностей, то можно писать так:
awk -F: $'BEGIN {print " \'Name\'--------------"} {print $1 "\t" $7}' file
Но здесь bash вместо \t подставит табуляцию.
awk понимает \t тоже как табуляцию, поэтому проблемы не будет (если ширина табуляции не важна).
Но, если табуляцию должен подставлять именно awk, а не besh, то нужно писать
awk -F: $'BEGIN {print " \'Name\'--------------"} {print $1 "\\t" $7}' file
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Помогите разобратся с awk"  
Сообщение от perece on 26-Июн-07, 16:59 
>>Здравствуйте, возникла проблема как с помощью утилиты awk записать в сценарий print
>>одинарные кавычки?
>>awk -F: 'BEGIN {print " 'Name'--------------"} {print $1 "\t" $7}' file
>>
>>"/" - не помог
>В bash между ' ' никак не может стоять ', даже экранировать
>его слешем нельзя.
неправда ваша. конструкция <одинарнаязакрылась><экранированаяодинарная><одинарнаяоткрылась> на ура работает (выглядит как '\'')

\^P^/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Помогите разобратся с awk"  
Сообщение от Kreept email(ok) on 26-Июн-07, 17:52 
>неправда ваша. конструкция <одинарнаязакрылась><экранированаяодинарная><одинарнаяоткрылась> на ура работает (выглядит как '\'')
>
>\^P^/

Я никак не смог экранировать ',  только с помощью  \047 или как описал zbl.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Помогите разобратся с awk"  
Сообщение от zbl on 29-Июн-07, 16:19 
>>В bash между ' ' никак не может стоять ', даже экранировать
>>его слешем нельзя.
>неправда ваша. конструкция <одинарнаязакрылась><экранированаяодинарная><одинарнаяоткрылась> на ура работает (выглядит как '\'')
Типа
bash$ echo '\''
да?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Помогите разобратся с awk"  
Сообщение от perece on 04-Июл-07, 15:33 
>>>В bash между ' ' никак не может стоять ', даже экранировать
>>>его слешем нельзя.
>>неправда ваша. конструкция <одинарнаязакрылась><экранированаяодинарная><одинарнаяоткрылась> на ура работает (выглядит как '\'')
>Типа
>bash$ echo '\''
>да?
нет. типа
bash$ echo 'слово1'\''слово2'
слово1'слово2
bash$

\^P^/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Помогите разобратся с awk"  
Сообщение от zbl on 07-Июл-07, 17:19 
>нет. типа
>bash$ echo 'слово1'\''слово2'
>слово1'слово2
>bash$
А-а, ясно:
bash$ echo \'\*\'
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Помогите разобратся с awk"  
Сообщение от makkon email on 05-Ноя-07, 19:16 
Дабы не засорять...
Вобщем ломаю голову.
Есть строки, количество полей в каждой варируется

Нужно вытащить первый, второй и (!!!внимание!!!) переменный столбец каждой строки.
Известно только то, что переменный столбец начинается и заканчивается на [ и ] соответственно. Возможный вариант решения задачи у меня есть, подправьте знающие:

awk '{for (i=3;i<=NF;i++)
if(?????) then print ($1 $2 $i)}' /home/text.txt
я так себе предполагаю конструкци, но не знаю, как записать правильно фразу: если столбец содержит/начинается/заканчивается символами [ или ], то его на печать

ПС, если синтаксис у меня запорот, подправьте тоже=(
Спасибо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Помогите разобратся с awk"  
Сообщение от phpcoder email(??) on 05-Ноя-07, 19:51 
[...]
>awk '{for (i=3;i<=NF;i++)
> if(?????) then print ($1 $2 $i)}' /home/text.txt
>я так себе предполагаю конструкци, но не знаю, как записать правильно фразу:
>если столбец содержит/начинается/заканчивается символами [ или ], то его на печать

if($i~/^\[.*\]$/) {...}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Помогите разобратся с awk"  
Сообщение от makkon email on 05-Ноя-07, 23:05 
>[...]
>>awk '{for (i=3;i<=NF;i++)
>> if(?????) then print ($1 $2 $i)}' /home/text.txt
>>я так себе предполагаю конструкци, но не знаю, как записать правильно фразу:
>>если столбец содержит/начинается/заканчивается символами [ или ], то его на печать
>
>if($i~/^\[.*\]$/) {...}

хм, набираю в командной строке консоли следующую строку:
awk '{for (i=3;i<=NF;i++) if($i~/^\[.*\]$/) {print ($1 $2 $i)}}' /home/text.txt
и виснет(( что неправильно тут подскажите пожалуйста?

from=<blabla@bla.co.za>, size=0, class=0, nrcpts=0, proto=SMTP, daemon=MTA, relay=140-17-19-33.res.net [140-17-19-33]
пример строки. Поидее результат команды должен выдать

from=<blabla@bla.co.za>, size=0, [140-17-19-33]

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Помогите разобратся с awk"  
Сообщение от phpcoder email(??) on 05-Ноя-07, 23:14 
[...]
>хм, набираю в командной строке консоли следующую строку:
>awk '{for (i=3;i<=NF;i++) if($i~/^\[.*\]$/) {print ($1 $2 $i)}}' /home/text.txt
>и виснет(( что неправильно тут подскажите пожалуйста?

У меня так и выдаёт:

[c0der@rock ~]$ echo "from=<blabla@bla.co.za>, size=0, class=0, nrcpts=0, proto=SMTP, daemon=MTA, relay=140-17-19-33.res.net [140-17-19-33]" | awk '{for (i=3;i<=NF;i++) if($i~/^\[.*\]$/) {print ($1 $2 $i)}}'
from=<blabla@bla.co.za>,size=0,[140-17-19-33]


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Помогите разобратся с awk"  
Сообщение от makkon email on 06-Ноя-07, 00:53 
>У меня так и выдаёт:
>
>[c0der@rock ~]$ echo "from=<blabla@bla.co.za>, size=0, class=0, nrcpts=0, proto=SMTP, daemon=MTA, relay=140-17-19-33.res.net [140-17-19-33]" | awk '{for (i=3;i<=NF;i++) if($i~/^\[.*\]$/) {print ($1 $2 $i)}}'
>from=<blabla@bla.co.za>,size=0,[140-17-19-33]

Хм, странно, запустил без изменений еще раз и сработало=)
Спасибо большое за подсказку.

Раз уж добрые люди сужествуют, то например, как мне сделать так, чтобы из
blabla@bla.co.za  size=0  [140-17-19-33]
получилось
blabla@bla.co.za  0  [140-17-19-33]
спасибо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Помогите разобратся с awk"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 11:17 
[...]
>Раз уж добрые люди сужествуют, то например, как мне сделать так, чтобы

Вариантов масса:

[c0der@rock ~]$ echo "size=0" | awk '{print strtonum($0)}'
0
[c0der@rock ~]$ echo "size=0" | awk '{printf("%d\n", $0)}'
0
[c0der@rock ~]$ echo "size=0" | awk '{gsub("^size=", ""); print}'
0

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Помогите разобратся с awk"  
Сообщение от makkon email on 06-Ноя-07, 13:35 

>0
>[c0der@rock ~]$ echo "size=0" | awk '{gsub("^size=", ""); print}'

за этот вариант отдельное спасибо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Помогите разобратся с awk"  
Сообщение от zbl on 04-Дек-07, 09:36 
>
>>0
>>[c0der@rock ~]$ echo "size=0" | awk '{gsub("^size=", ""); print}'
>
>за этот вариант отдельное спасибо

bash$ echo size=0 | sed 's/^size=//'
Для простейших операций sed больше подходит, ибо чуть шустрее, чем awk.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Помогите разобратся с awk"  
Сообщение от phpcoder email(??) on 04-Дек-07, 09:41 
[...]
>Для простейших операций sed больше подходит, ибо чуть шустрее, чем awk.

Когда-то я читал, что как раз awk быстрее :)

Хотя сейчас нагуглил обратное:

""По скорости выполнения sed [...] заметно быстрее чем AWK." (c) http://ru.wikipedia.org/wiki/Sed

Интересно..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Помогите разобратся с awk"  
Сообщение от zbl on 06-Дек-07, 15:20 
>Когда-то я читал, что как раз awk быстрее :)
>
>Хотя сейчас нагуглил обратное:

А я всегда в таких случаях упоминаю NFL теорему: если в данной задаче алгоритм A работает быстрее алгоритма B, то всегда найдётся задача, в которой алгоритм B работает быстрее алгоритма A.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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