The OpenNET Project / Index page

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

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

"простой скрипт в shell "
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 03-Ноя-04, 20:43  (MSK)
Доброго времени суток.

Вот сижу и немогу сообразить как такую штуку реализовать.

Есть программа которая выводит некоторые данные (для примера df)
Нужно эти данные добавить в файл и эти же данные !!! записать в другой файл, предварительно их обработав. Что то наподобие такого...
df -h > 111.txt | tail -r > 222.txt

естественно данные выводятся в 111.txt а 222.txt создается но пустой.

можно ли в SH реализовать подобную конструкцию ? или необходимо пользоваться TMP файлом или переменной ?

Спасибо.

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

 Оглавление

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

1. "простой скрипт в shell "
Сообщение от vnp emailИскать по авторуВ закладки(??) on 03-Ноя-04, 21:29  (MSK)
man tee

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

2. "простой скрипт в shell "
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 03-Ноя-04, 22:13  (MSK)
>man tee

спасибо помогло

есть еще запинка
например
du -d 1 /usr/local/etc/

2       /usr/local/etc/pam.d
24      /usr/local/etc/rc.d
68      /usr/local/etc/mpd
3464    /usr/local/etc/squid
100     /usr/local/etc/cups
3652    /usr/local/etc/codepages
178     /usr/local/etc/apache
4       /usr/local/etc/php
7878    /usr/local/etc/

нужно подсчитать сумму чисел первого столбца..  можно ли подобное реализовать однострочным скриптом...

точнее нужно (в однострочном скрипте), вывести вывод в файл, паралельно подсчитав сумму чисел первого столбца и эту сумму вывести в другой файл..

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

Спасибо.

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

3. "простой скрипт в shell"
Сообщение от dimus Искать по авторуВ закладки(??) on 04-Ноя-04, 08:29  (MSK)
du -s -h <целевая директория> - посчитает объем файлов в целевой директории
-s - считать сумму
-h - вывести результат в человеческом виде.

Пример:
du -s -h /etc - выдаст объем директории /etc

Для анализа занятости файловой системы целиком можно использовать команду df К ней также применим аргумент -h

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

4. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 04-Ноя-04, 08:36  (MSK)
>du -s -h <целевая директория> - посчитает объем файлов в целевой директории
> -s - считать сумму
> -h - вывести результат в человеческом виде.
>
>Пример:
>du -s -h /etc - выдаст объем директории /etc
>
>Для анализа занятости файловой системы целиком можно использовать команду df К ней
>также применим аргумент -h

хмм...  неудачный я пример привел...  du я только для примера привел, смысл в том что данные у меня будут примерно такого формата как и du, разве что столбец тругой.

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

5. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 04-Ноя-04, 09:49  (MSK)
>>du -s -h <целевая директория> - посчитает объем файлов в целевой директории
>> -s - считать сумму
>> -h - вывести результат в человеческом виде.
>>
>>Пример:
>>du -s -h /etc - выдаст объем директории /etc
>>
>>Для анализа занятости файловой системы целиком можно использовать команду df К ней
>>также применим аргумент -h
>
>хмм...  неудачный я пример привел...  du я только для примера
>привел, смысл в том что данные у меня будут примерно такого
>формата как и du, разве что столбец тругой.

man tee

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

6. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 04-Ноя-04, 10:15  (MSK)
>>хмм...  неудачный я пример привел...  du я только для примера
>>привел, смысл в том что данные у меня будут примерно такого
>>формата как и du, разве что столбец тругой.
>
>man tee

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

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

7. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 04-Ноя-04, 10:20  (MSK)
>>>хмм...  неудачный я пример привел...  du я только для примера
>>>привел, смысл в том что данные у меня будут примерно такого
>>>формата как и du, разве что столбец тругой.
>>
>>man tee
>
>ладно по человечески ответьте, односточным скриптом это реализуемо ?

[test@test shell]# df -h | tee tee.out | grep c0d1p3 > grep.out
[test@test shell]# cat tee.out
Filesystem            Size  Used Avail Use% Mounted on
/dev/rd/c0d1p3       1008M  808M  149M  85% /
/dev/rd/c0d0p1        146M  9.1M  129M   7% /boot
/dev/rd/c0d1p7       1008M   17M  941M   2% /home
none                  187M     0  187M   0% /dev/shm
/dev/rd/c0d1p5       1008M   17M  941M   2% /tmp
/dev/rd/c0d1p2        3.0G  1.4G  1.5G  47% /usr
/dev/rd/c0d1p1        7.2G  1.5G  5.4G  22% /var
[test@test shell]# cat grep.out
/dev/rd/c0d1p3       1008M  808M  149M  85% /

P.S. man tee

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

8. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(ok) on 04-Ноя-04, 10:44  (MSK)
>[test@test shell]# df -h | tee tee.out | grep c0d1p3 > grep.out
>[test@test shell]# cat tee.out
>Filesystem            
>Size  Used Avail Use% Mounted on
>/dev/rd/c0d1p3       1008M  808M  149M
> 85% /
>/dev/rd/c0d0p1        146M  9.1M  
>129M   7% /boot
>/dev/rd/c0d1p7       1008M   17M  
>941M   2% /home
>none            
>      187M    
>0  187M   0% /dev/shm
>/dev/rd/c0d1p5       1008M   17M  
>941M   2% /tmp
>/dev/rd/c0d1p2        3.0G  1.4G  
>1.5G  47% /usr
>/dev/rd/c0d1p1        7.2G  1.5G  
>5.4G  22% /var
>[test@test shell]# cat grep.out
>/dev/rd/c0d1p3       1008M  808M  149M
> 85% /
>
>P.S. man tee


эээээ...  собственно я не про tee уже :), про вычисление суммы столбца.

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

9. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 04-Ноя-04, 10:55  (MSK)
>>[test@test shell]# df -h | tee tee.out | grep c0d1p3 > grep.out
>>[test@test shell]# cat tee.out
>>Filesystem            
>>Size  Used Avail Use% Mounted on
>>/dev/rd/c0d1p3       1008M  808M  149M
>> 85% /
>>/dev/rd/c0d0p1        146M  9.1M  
>>129M   7% /boot
>>/dev/rd/c0d1p7       1008M   17M  
>>941M   2% /home
>>none            
>>      187M    
>>0  187M   0% /dev/shm
>>/dev/rd/c0d1p5       1008M   17M  
>>941M   2% /tmp
>>/dev/rd/c0d1p2        3.0G  1.4G  
>>1.5G  47% /usr
>>/dev/rd/c0d1p1        7.2G  1.5G  
>>5.4G  22% /var
>>[test@test shell]# cat grep.out
>>/dev/rd/c0d1p3       1008M  808M  149M
>> 85% /
>>
>>P.S. man tee
>
>
>эээээ...  собственно я не про tee уже :), про вычисление суммы
>столбца.

[root@rhel-ns1 shell]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/rd/c0d1p3       1008M  808M  149M  85% /
/dev/rd/c0d0p1        146M  9.1M  129M   7% /boot
/dev/rd/c0d1p7       1008M   17M  941M   2% /home
none                  187M     0  187M   0% /dev/shm
/dev/rd/c0d1p5       1008M   17M  941M   2% /tmp
/dev/rd/c0d1p2        3.0G  1.4G  1.5G  47% /usr
/dev/rd/c0d1p1        7.2G  1.5G  5.4G  22% /var
[root@rhel-ns1 shell]# df -h | awk 'BEGIN{SUM=0} {if($1~/\/dev\//){SUM=SUM+substr($3,0,length($3)-1)}} END{print SUM}'
854

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

10. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(ok) on 04-Ноя-04, 11:27  (MSK)
>[root@rhel-ns1 shell]# df -h | awk 'BEGIN{SUM=0} {if($1~/\/dev\//){SUM=SUM+substr($3,0,length($3)-1)}} END{print SUM}'
>854

класно, спасибо.. кажется проблема в том что я непонимаю как поток работает.
в awk приходит строка до '\n' он ее обрабатывает и так далее
или в awk передается весь вывод сразу ?

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

11. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 04-Ноя-04, 11:37  (MSK)
>>[root@rhel-ns1 shell]# df -h | awk 'BEGIN{SUM=0} {if($1~/\/dev\//){SUM=SUM+substr($3,0,length($3)-1)}} END{print SUM}'
>>854
>
>класно, спасибо.. кажется проблема в том что я непонимаю как поток работает.
>
>в awk приходит строка до '\n' он ее обрабатывает и так далее
>
>или в awk передается весь вывод сразу ?

man awk:
...
VARIABLES, RECORDS AND FIELDS
...
   Records
       Normally, records are separated by newline characters.  You can control
       how  records are separated by assigning values to the built-in variable
       RS.
...

P.S. Kak peredajetca - eto ne vazno. Vazno 4to awk obrobativajet kazduju stroku otdelno, ispolzuja zna4enije RS peremennoi v ka4estve razdelitelja
strok.

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

12. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 04-Ноя-04, 21:44  (MSK)
>man awk:
>...
>VARIABLES, RECORDS AND FIELDS
>...
>   Records
>       Normally, records are separated by
>newline characters.  You can control
>       how  records are separated
>by assigning values to the built-in variable
>       RS.
>...
>
>P.S. Kak peredajetca - eto ne vazno. Vazno 4to awk obrobativajet kazduju
>stroku otdelno, ispolzuja zna4enije RS peremennoi v ka4estve razdelitelja
>strok.

вообшем у меня получается нехилая строка если в 1 строку все писать :)
поэтому пишу на перл, т.е. всетаки все что мне надо было это MAN TEE :))

всем спасибо !

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

13. "простой скрипт в shell"
Сообщение от chip emailИскать по авторуВ закладки(ok) on 06-Ноя-04, 14:24  (MSK)

>[root@rhel-ns1 shell]# df -h
>Filesystem            
>Size  Used Avail Use% Mounted on
>/dev/rd/c0d1p3       1008M  808M  149M
> 85% /
>/dev/rd/c0d0p1        146M  9.1M  
>129M   7% /boot
>/dev/rd/c0d1p7       1008M   17M  
>941M   2% /home
>none            
>      187M    
>0  187M   0% /dev/shm
>/dev/rd/c0d1p5       1008M   17M  
>941M   2% /tmp
>/dev/rd/c0d1p2        3.0G  1.4G  
>1.5G  47% /usr
>/dev/rd/c0d1p1        7.2G  1.5G  
>5.4G  22% /var
>[root@rhel-ns1 shell]# df -h | awk 'BEGIN{SUM=0} {if($1~/\/dev\//){SUM=SUM+substr($3,0,length($3)-1)}} END{print SUM}'
>854

ну то что скрипт от root@ запущен это еще полбеды. Так он складывает гири с цестернами. Вы хоть задумались, что выдает скрипт ?!

808M + 9.1M + 17M + 17M + 1.4G + 1.5G = 854M ? Оригинально.


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

14. "простой скрипт в shell"
Сообщение от Grayich emailИскать по авторуВ закладки(??) on 06-Ноя-04, 23:33  (MSK)
>ну то что скрипт от root@ запущен это еще полбеды. Так он
>складывает гири с цестернами. Вы хоть задумались, что выдает скрипт ?!
>
>
>808M + 9.1M + 17M + 17M + 1.4G + 1.5G =
>854M ? Оригинально.

:)  рут в данном случае непричем, это всего лишь пример


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


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

15. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 08-Ноя-04, 15:12  (MSK)
>
>>[root@rhel-ns1 shell]# df -h
>>Filesystem            
>>Size  Used Avail Use% Mounted on
>>/dev/rd/c0d1p3       1008M  808M  149M
>> 85% /
>>/dev/rd/c0d0p1        146M  9.1M  
>>129M   7% /boot
>>/dev/rd/c0d1p7       1008M   17M  
>>941M   2% /home
>>none            
>>      187M    
>>0  187M   0% /dev/shm
>>/dev/rd/c0d1p5       1008M   17M  
>>941M   2% /tmp
>>/dev/rd/c0d1p2        3.0G  1.4G  
>>1.5G  47% /usr
>>/dev/rd/c0d1p1        7.2G  1.5G  
>>5.4G  22% /var
>>[root@rhel-ns1 shell]# df -h | awk 'BEGIN{SUM=0} {if($1~/\/dev\//){SUM=SUM+substr($3,0,length($3)-1)}} END{print SUM}'
>>854
>
>ну то что скрипт от root@ запущен это еще полбеды. Так он
>складывает гири с цестернами. Вы хоть задумались, что выдает скрипт ?!
>
>
>808M + 9.1M + 17M + 17M + 1.4G + 1.5G =
>854M ? Оригинально.

1) V dannom slu4aje izmerenija ne est glavnoje.
2) A kakaja raznica root ili ne root ?


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

16. "простой скрипт в shell"
Сообщение от chip emailИскать по авторуВ закладки(ok) on 08-Ноя-04, 20:14  (MSK)
>1) V dannom slu4aje izmerenija ne est glavnoje.

а что тогда ? substr($3, 0, length($3)-1) для чего городилось ? идею можно было и иначе представить.

>2) A kakaja raznica root ili ne root ?

это дело каждого. скорее просто *nix-этика.

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

17. "простой скрипт в shell"
Сообщение от Brainbug Искать по авторуВ закладки(??) on 09-Ноя-04, 13:46  (MSK)
>>1) V dannom slu4aje izmerenija ne est glavnoje.
>
>а что тогда ? substr($3, 0, length($3)-1) для чего городилось ? идею
>можно было и иначе представить.

Kone4no mozno bilo, ja i  ne sporu. Tolko vot po4emu to nikto ne
predstavil. V princepe mozno bilo delat i bez substr i tozhe bilo bi
pravilno, t.k. nikakih tipo i t.d. v awk net. No dla 4ego pridumivat
kakije iskustvennije 4isla, zna4enija situacii i t.d. esli mozno vzat
to 4to jest v "prirode". Tak i zada4a bila sos4itat v stolbik, 4to v
princepe i bilo sdelano.

>
>>2) A kakaja raznica root ili ne root ?
>
>это дело каждого. скорее просто *nix-этика.


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

18. "простой скрипт в shell"
Сообщение от chip emailИскать по авторуВ закладки(ok) on 09-Ноя-04, 22:44  (MSK)

собственно каждый все равно останется при своем мнении. Поэтому предлагаю закруглиться.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

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




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

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