Составляем скрипт (разнообразные вопросы по утилитам)
Модератор: Модераторы разделов
-
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
Re: Составляем скрипт
по первому вопросу я обычно grep -v использую
-
- Сообщения: 86
- ОС: linux
Re: Составляем скрипт
http://gazette.linux.ru.net/rus/articles/a...ide/a15696.html
маленькая шпаргалка по седу
а удалить строки это приблизительно так
grep --invert-match blablabla file > newfile
в newfile будет все кроме строк с blablabla
маленькая шпаргалка по седу
а удалить строки это приблизительно так
grep --invert-match blablabla file > newfile
в newfile будет все кроме строк с blablabla
Gentoo Base System 1.12.5 (2.6.17-gentoo-r8)
-
- Сообщения: 558
- Статус: Главный модератор "Пингвинария" на Лафоксе.
Re: Составляем скрипт
что_надо_исключить - имеется ввиду "строка, содержащая ЭТО" не попадет в новый файл.
Код: Выделить всё
cat подопытный_файл | grep -v 'что_надо_исключить' > новый_файл
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
-
- Сообщения: 7
Re: Составляем скрипт
Спасибо, спасибо, спасибо, всем!
Чувствую себя не чайником, а самоваром.
Чувствую себя не чайником, а самоваром.
-
- Сообщения: 83
Re: Составляем скрипт
Помогите, пожалуйста!
Необходимо найти файл с определённым словом в большом количестве файлов.
посоветуйте команды, чтобы это сделать.
Заранее спасибо.
Необходимо найти файл с определённым словом в большом количестве файлов.
посоветуйте команды, чтобы это сделать.
Заранее спасибо.
-
- Сообщения: 54
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Составляем скрипт
и подробнее
а также
Код: Выделить всё
find /path/to/find/ | xargs grep word_to_find
а также
Код: Выделить всё
man find; man xargs
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 1019
- Статус: Экс-металлюга
Re: Составляем скрипт
зачем такие сложности? grep -r замечательно может рекурсивно искать. И, в отличие от, выводить имена файлов, где найдено.
ArchLinux / IceWM
-
- Сообщения: 2
Re: Составляем скрипт
У меня по лабам по линуксу такой вопрос, на который мне не удалось найти ответа : вывести список файлов из /usr/share/man , начинающихся с символа 'q' с заходом в подкаталоги. Список отсортировать по размеру файлов в порядке возрастания. Это надо сделать одной командой. Для сортировки подходит ls, но ничего не прирдумать ...
-
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Составляем скрипт
Код: Выделить всё
find /usr/share/man/ -name 'q*' | xargs ls -lrS
слава роботам!
-
- Сообщения: 2
Re: Составляем скрипт
elide писал(а): ↑04.04.2006 21:41так?Код: Выделить всё
find /usr/share/man/ -name 'q*' | xargs ls -lrS
А одной командой никак?
И как действует ключ -R (рекурсивно заходить в подкаталоги)? Он вообще действует?
-
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Составляем скрипт
конечно действует. и заходит. просто тогда ты не сможешь отделить файлы, которые начинаются с q.
слава роботам!
-
- Сообщения: 189
Re: Составляем скрипт
Сразу признаюсь они для /me дремучий лес.
Как в регекспах обзначить символ(ы) перехода на новую строку.
Конкретнее мне это надо в Kate, для поиска-замены. В гуйовом составителе регекспов (kde) такого, что-то нет.
Как в регекспах обзначить символ(ы) перехода на новую строку.
Конкретнее мне это надо в Kate, для поиска-замены. В гуйовом составителе регекспов (kde) такого, что-то нет.
AMD Athlon XP, 1800 MHz (13.5 x 133) 2200+
Gigabyte GA-7VA (VIA VT8377 Apollo KT400; Realtek ALC650 @ VIA AC'97 Enhanced Audio Controller)
NVIDIA Geforce4 MX 440 AGP8X NV18 Chip Rev A2
Да, я именно Каменьщик, ибо нас каменщиков много.
{23.04.06: аккаунт покинут создателем и не используется более}
Gigabyte GA-7VA (VIA VT8377 Apollo KT400; Realtek ALC650 @ VIA AC'97 Enhanced Audio Controller)
NVIDIA Geforce4 MX 440 AGP8X NV18 Chip Rev A2
Да, я именно Каменьщик, ибо нас каменщиков много.
{23.04.06: аккаунт покинут создателем и не используется более}
-
- Сообщения: 268
- Статус: Живущий тут
Re: Составляем скрипт
$
пример cat /etc/squid/squid.conf | grep ss$ напечатает строки, оканчивающиеся на ss
пример cat /etc/squid/squid.conf | grep ss$ напечатает строки, оканчивающиеся на ss
В одном мгновеньи – видеть вечность,
Огромный мир в горсти песка,
В одной песчинке – бесконечность,
И небо в чашечке цветка.
Огромный мир в горсти песка,
В одной песчинке – бесконечность,
И небо в чашечке цветка.
-
- Модератор
- Сообщения: 2089
- ОС: ALT Linux
Re: Составляем скрипт
Вообще то нужно различать конец строки и символы конца строки. Соотвественно, $ и [\n] (оба есть в конструкторе регулярных выражений Kate). Если вы заменяете $ на текст, то он добавляется в конец строки. Но вот с [\n] немного по другому: он остаётся тем самым $ и не рассматривается как символ потока. Чтобы слить строки:
1. Выделите текст
2. Выберите Сервис-Текстовый фильтр
3. Вбейте tr -d '\n'
4. Нажмите Enter или кнопку OK.
Skull
-
- Сообщения: 189
Re: Составляем скрипт
не может найти строку '\n'
Вот пример.
Код: Выделить всё
first first
first first
first first
first first
first first
first first
надо найти первый "first" каждого блока и заменить к примеру на "second"
т.е. получить
Код: Выделить всё
second first
first first
second first
first first
second first
first first
То есть якорем, ключевой строкой поиска является "пустая строка" после каждого блока.
как это сделать (в Kate) не знаю.
^$ находит эту строку. Но, ^$^first не прокатывает, как и "\nfirst" или "\n first", как уже писал вообще не находит '\n'
AMD Athlon XP, 1800 MHz (13.5 x 133) 2200+
Gigabyte GA-7VA (VIA VT8377 Apollo KT400; Realtek ALC650 @ VIA AC'97 Enhanced Audio Controller)
NVIDIA Geforce4 MX 440 AGP8X NV18 Chip Rev A2
Да, я именно Каменьщик, ибо нас каменщиков много.
{23.04.06: аккаунт покинут создателем и не используется более}
Gigabyte GA-7VA (VIA VT8377 Apollo KT400; Realtek ALC650 @ VIA AC'97 Enhanced Audio Controller)
NVIDIA Geforce4 MX 440 AGP8X NV18 Chip Rev A2
Да, я именно Каменьщик, ибо нас каменщиков много.
{23.04.06: аккаунт покинут создателем и не используется более}
-
- Сообщения: 1019
- Статус: Экс-металлюга
Re: Составляем скрипт
если прокатит, можно так
(написано "сходу", наверняка можно оптимизировать)
Код: Выделить всё
sed -n '/^$/{b s2};${H;:s2 x;s/first/second/;p;b};H'
(написано "сходу", наверняка можно оптимизировать)
ArchLinux / IceWM
-
- Сообщения: 8
Re: Составляем скрипт
Как изветстно в месяцах различное количество дней
Есть такая задача:
надо скачать телепрограмму на неделю, файл называется tv-02-08.htm
пишу так:
если конец недели не перескакивает на другой месяц (либо начало недели на предыдущий) все работает.
каким образом можно делать проверку чтобы скрипт работал в люое время?
Есть такая задача:
надо скачать телепрограмму на неделю, файл называется tv-02-08.htm
пишу так:
Код: Выделить всё
#!/bin/sh
#weekday now
weekday=`date +%u`
#day now
day=`date +%d`
#first and last day of week
let day_start=day-weekday+1
let day_end=day_start+6
#load tv program file like "tv-02-08.htm"
wget http://address.dom/tv-$day_start\-$day_end\.htm
если конец недели не перескакивает на другой месяц (либо начало недели на предыдущий) все работает.
каким образом можно делать проверку чтобы скрипт работал в люое время?
-
- Бывший модератор
- Сообщения: 630
- Статус: Тщедушный очкарик
Re: Составляем скрипт
Так date умеет и день недели показывать... Всю дату полностью в каком хочешь формате.
аа, я просто вопрос не понял...
попробуй посмотреть в сторону календарика cal, может он что подскажет...
аа, я просто вопрос не понял...
попробуй посмотреть в сторону календарика cal, может он что подскажет...
Не шалю, никого не трогаю, починяю примус...
-
- Сообщения: 8
Re: Составляем скрипт
это все понятно, но если я знаю, что сегодня 27 и вторник - мне надо узнать какое число понедельник и какое воскресенье, для этого мне надо описывать сколько дней вкаждом месяце и т.д.
Есть ли что-то готовое типа 27.02.2006 + 3 дня = 02.03.2006
-
- Бывший модератор
- Сообщения: 630
- Статус: Тщедушный очкарик
Re: Составляем скрипт
Скорее всего что-то готовое есть, просто я не знаю
А я тут подумал, что можно делать вот типа такого
today=date -u +'%d'
cal -m | grep $today
выведет текущую неделю, которую уже можно разбирать по дням - первый и последний елементы и будут граничными числами недели. При переходе через месяц нужно просто посчитать количество дней, которые надо дополнить до недели.
А я тут подумал, что можно делать вот типа такого
today=date -u +'%d'
cal -m | grep $today
выведет текущую неделю, которую уже можно разбирать по дням - первый и последний елементы и будут граничными числами недели. При переходе через месяц нужно просто посчитать количество дней, которые надо дополнить до недели.
Не шалю, никого не трогаю, починяю примус...
-
- Сообщения: 202
- ОС: Gentoo
Re: Составляем скрипт
Хм, если я правильно понял вопрос, то вот простое решение:
Использование:То есть первый параметр - конкретная дата, второй - сколько дней прибавить.
Можно легко доделать, чтобы он выводил имя нужного html файла
З.Ы. Я его попроще написал, чтоб понятнее было
Код: Выделить всё
#!/usr/bin/php
<?
$date = @$_SERVER['argv'][1];
$inc = @$_SERVER['argv'][2];
if(!$date || (!$inc && $inc != '0')) die("Error\n");
$w1 = '([0-9]{2})';
$w2 = '([0-9]{4})';
eregi("^$w1.$w1.$w2$", $date, $pock);
if(!$pock[1] || !$pock[2] || !$pock[3]) die("Error\n");
$d = $pock[1];
$m = $pock[2];
$y = $pock[3];
unset($pock);
$date = mktime(0, 0, 0, $m, $d, $y);
$date += $inc * 24 * 60 * 60;
echo date("d-m-Y", $date) . "\n";
?>
Использование:
Код: Выделить всё
$ php script.php 21.04.2006 3
24-04-2006
$ php script.php 21.04.2006 10
01-05-2006
Можно легко доделать, чтобы он выводил имя нужного html файла
З.Ы. Я его попроще написал, чтоб понятнее было
-
- Сообщения: 8
Re: Составляем скрипт
посмотрел
не то
2 Гарыныч
Большое спасибо
заработало
я догадывался, что в php или perl можно такое замутить, но ими не особо владею
доработаю и вставлю в свой скрипт как функцию
еще раз спасибо
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Составляем скрипт
(Alex_D @ Apr 21 2006, в 14:42) писал(а):Есть ли что-то готовое типа 27.02.2006 + 3 дня = 02.03.2006
Код: Выделить всё
date -d "2006/02/27 +3 days"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8
Re: Составляем скрипт
sash-kan писал(а): ↑21.04.2006 17:07(Alex_D @ Apr 21 2006, в 14:42) писал(а):Есть ли что-то готовое типа 27.02.2006 + 3 дня = 02.03.2006
Код: Выделить всё
date -d "2006/02/27 +3 days"
<_<
блин, а я уже переписал скрипт
а сейчас заново надо
короче спасибо намного упростится задача
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Составляем скрипт
Столкнулся с необходимостью вырезать из файла некий кусок, на основании регулярного выражения. Данный кусок может быть (а может и не быть) многострочным. Не хотелось бы прибегать к помощи чего-то ещё кроме grep или sed (awk нежелателен). Но столкнулся с тем, что не могу заставить упомянутые программы работать со всем потоком сразу, не учитывая концов строк. Пропустить поток через tr, с целью удаления "\r\n" (файл виндовый, всё под Cygwin) перед grep тоже не сильно подходит. Возможно ли такое вообще?
-
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Составляем скрипт
serzh-z писал(а): ↑18.05.2006 15:14Столкнулся с необходимостью вырезать из файла некий кусок, на основании регулярного выражения. Данный кусок может быть (а может и не быть) многострочным. Не хотелось бы прибегать к помощи чего-то ещё кроме grep или sed (awk нежелателен). Но столкнулся с тем, что не могу заставить упомянутые программы работать со всем потоком сразу, не учитывая концов строк. Пропустить поток через tr, с целью удаления "\r\n" (файл виндовый, всё под Cygwin) перед grep тоже не сильно подходит. Возможно ли такое вообще?
Не знаю насколько правильно, для того чтобы искать многострочные элементы grep-ом использю опцию P - использовать регулярные выражения из perl. Типа grep -P "bla-bla-bla\nbla-bla-bla" ))
Про многострочие в sed можно посмотреть тут: http://www.unix.org.ua/orelly/unix/sedawk/ch06_01.htm
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Составляем скрипт
Пожалуй, подойдёт. Спасибо.
-
- Сообщения: 525
- Статус: Вселенский отказник
- ОС: windoze
Re: Составляем скрипт
Как убить процессы, имя исполняемого файла которых начинается на sv_. Одной коммандой.
Просто надоело список процессов ps aux |grep sv_
а потом kill -9 пид1 пид2 пид3...
Как это в 1 комманду объединить? =)
Просто надоело список процессов ps aux |grep sv_
а потом kill -9 пид1 пид2 пид3...
Как это в 1 комманду объединить? =)
ICQ 547097