The OpenNET Project / Index page

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

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

"Ворос по awk?" 
Сообщение от Руля Искать по авторуВ закладки(??) on 25-Ноя-05, 11:58  (MSK)
В скрипте awk-шном ввожу такую вот строчку:
"time=`date +%d-%H` |/usr/bin/touch /var/log/log$time" |getline mess
При этом файл создается только при запуске скрипта, а с течением времени новый файл не создается. Какого?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "Ворос по awk?" 
Сообщение от allez Искать по авторуВ закладки(ok) on 25-Ноя-05, 13:37  (MSK)
>В скрипте awk-шном ввожу такую вот строчку:
>"time=`date +%d-%H` |/usr/bin/touch /var/log/log$time" |getline mess
>При этом файл создается только при запуске скрипта, а с течением времени
>новый файл не создается. Какого?


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

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

2. "Ворос по awk?" 
Сообщение от Руля Искать по авторуВ закладки(??) on 25-Ноя-05, 13:54  (MSK)
>А хрен его знает, товарищ майор. Пока не покажете весь скрипт, ничего
>
>сказать не могу. Может, у вас эта строчка всего один раз и
>выполняется?
Делаю следующее:
tcpdump -paramert |filte &
В filter:
#!/usr/bin/awk -f
#
BEGIN {
...
}
{
"time=`date +%d-%H` |/usr/bin/touch /var/log/tcplog/tcplog/tcp$time" |getline mess
...
}
END {
...
}

Это все запускается и работает в фоне. Время при старте считуется и не меняется больше (только при перезапуске). Соответсвенно файлы не генерятся.

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

3. "Ворос по awk?" 
Сообщение от YuryD Искать по авторуВ закладки(??) on 25-Ноя-05, 14:44  (MSK)
>"time=`date +%d-%H` |/usr/bin/touch /var/log/tcplog/tcplog/tcp$time"

может полного пути к date не хватает ? :-)

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

4. "Ворос по awk?" 
Сообщение от vt Искать по авторуВ закладки(ok) on 25-Ноя-05, 15:22  (MSK)
>#!/usr/bin/awk -f

>{
>"time=`date +%d-%H` |/usr/bin/touch /var/log/tcplog/tcplog/tcp$time" |getline mess
>...
>}

man awk:
command | getline [var]
Run command piping the output either into $0 or var

поэтому только так:
{
"date +%d-%H" | getline time
system( "touch file" time )
}

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

5. "Ворос по awk?" 
Сообщение от Руля Искать по авторуВ закладки(??) on 25-Ноя-05, 15:34  (MSK)
>"date +%d-%H" | getline time
Так вот эта вот строчка также не пашет. При запуске скрипта оно один раз считует дату в переменную time и потом оно уже не меняется.

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

6. "Ворос по awk?" 
Сообщение от Руля Искать по авторуВ закладки(??) on 25-Ноя-05, 15:43  (MSK)
>>"date +%d-%H" | getline time
>Так вот эта вот строчка также не пашет. При запуске скрипта оно
>один раз считует дату в переменную time и потом оно уже
>не меняется.
Вопчим, нада так:
time=system("date +%d-%H")
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Ворос по awk?" 
Сообщение от vt Искать по авторуВ закладки(ok) on 25-Ноя-05, 16:24  (MSK)
>Вопчим, нада так:
>time=system("date +%d-%H")

Нет, system не возвращает stdout
По крайней мере, в gawk

А время, действительно, не меняется:

$ cat tic.sh
#!/bin/sh
date
sleep 1
$0

$ cat test.awk
#!/bin/awk -f
{
"date +%s" | getline time
print time
}

$ ./tic.sh | ./test.awk
1132924700
1132924700
1132924700

Это интересно
Но сегодня уже нет времени разбираться

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

8. "Ворос по awk?" 
Сообщение от vt Искать по авторуВ закладки(ok) on 25-Ноя-05, 20:07  (MSK)
awk выполняет команду только один раз
getline построчно вычитывает stdout выполнения команды
Первое выполнение getline - первую строку, второе - вторую и тд
Чтобы выполнить команду повторно, ее надо "закрыть"
{
command = "date +%s"
command | getline time
close( command )
print time
}

В gawk для работы с датой-временем лучше пользоваться функцией strftime

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


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

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




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

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