Составляем скрипт (разнообразные вопросы по утилитам)
Модератор: Модераторы разделов
Re: Составляем скрипт
по первому вопросу я обычно grep -v использую
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)
Re: Составляем скрипт
что_надо_исключить - имеется ввиду "строка, содержащая ЭТО" не попадет в новый файл.
Код: Выделить всё
cat подопытный_файл | grep -v 'что_надо_исключить' > новый_файл
Угадайте: где на фотографии, которая представляет мой аватавр, спрятана птичка?
Re: Составляем скрипт
Спасибо, спасибо, спасибо, всем!
Чувствую себя не чайником, а самоваром.
Чувствую себя не чайником, а самоваром.
Re: Составляем скрипт
Помогите, пожалуйста!
Необходимо найти файл с определённым словом в большом количестве файлов.
посоветуйте команды, чтобы это сделать.
Заранее спасибо.
Необходимо найти файл с определённым словом в большом количестве файлов.
посоветуйте команды, чтобы это сделать.
Заранее спасибо.
Re: Составляем скрипт
и подробнее
а также
Код: Выделить всё
find /path/to/find/ | xargs grep word_to_find
а также
Код: Выделить всё
man find; man xargs
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Составляем скрипт
зачем такие сложности? grep -r замечательно может рекурсивно искать. И, в отличие от, выводить имена файлов, где найдено.
ArchLinux / IceWM
Re: Составляем скрипт
У меня по лабам по линуксу такой вопрос, на который мне не удалось найти ответа : вывести список файлов из /usr/share/man , начинающихся с символа 'q' с заходом в подкаталоги. Список отсортировать по размеру файлов в порядке возрастания. Это надо сделать одной командой. Для сортировки подходит ls, но ничего не прирдумать ...
Re: Составляем скрипт
Код: Выделить всё
find /usr/share/man/ -name 'q*' | xargs ls -lrS
слава роботам!
Re: Составляем скрипт
elide писал(а): ↑04.04.2006 21:41так?Код: Выделить всё
find /usr/share/man/ -name 'q*' | xargs ls -lrS
А одной командой никак?
И как действует ключ -R (рекурсивно заходить в подкаталоги)? Он вообще действует?
Re: Составляем скрипт
конечно действует. и заходит. просто тогда ты не сможешь отделить файлы, которые начинаются с q.
слава роботам!
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: аккаунт покинут создателем и не используется более}
Re: Составляем скрипт
$
пример cat /etc/squid/squid.conf | grep ss$ напечатает строки, оканчивающиеся на ss
пример cat /etc/squid/squid.conf | grep ss$ напечатает строки, оканчивающиеся на ss
В одном мгновеньи – видеть вечность,
Огромный мир в горсти песка,
В одной песчинке – бесконечность,
И небо в чашечке цветка.
Огромный мир в горсти песка,
В одной песчинке – бесконечность,
И небо в чашечке цветка.
Re: Составляем скрипт
Вообще то нужно различать конец строки и символы конца строки. Соотвественно, $ и [\n] (оба есть в конструкторе регулярных выражений Kate). Если вы заменяете $ на текст, то он добавляется в конец строки. Но вот с [\n] немного по другому: он остаётся тем самым $ и не рассматривается как символ потока. Чтобы слить строки:
1. Выделите текст
2. Выберите Сервис-Текстовый фильтр
3. Вбейте tr -d '\n'
4. Нажмите Enter или кнопку OK.
Skull
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: аккаунт покинут создателем и не используется более}
Re: Составляем скрипт
если прокатит, можно так
(написано "сходу", наверняка можно оптимизировать)
Код: Выделить всё
sed -n '/^$/{b s2};${H;:s2 x;s/first/second/;p;b};H'
(написано "сходу", наверняка можно оптимизировать)
ArchLinux / IceWM
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
если конец недели не перескакивает на другой месяц (либо начало недели на предыдущий) все работает.
каким образом можно делать проверку чтобы скрипт работал в люое время?
Re: Составляем скрипт
Так date умеет и день недели показывать... Всю дату полностью в каком хочешь формате.
аа, я просто вопрос не понял...
попробуй посмотреть в сторону календарика cal, может он что подскажет...
аа, я просто вопрос не понял...
попробуй посмотреть в сторону календарика cal, может он что подскажет...
Не шалю, никого не трогаю, починяю примус...
Re: Составляем скрипт
это все понятно, но если я знаю, что сегодня 27 и вторник - мне надо узнать какое число понедельник и какое воскресенье, для этого мне надо описывать сколько дней вкаждом месяце и т.д.
Есть ли что-то готовое типа 27.02.2006 + 3 дня = 02.03.2006
Re: Составляем скрипт
Скорее всего что-то готовое есть, просто я не знаю
А я тут подумал, что можно делать вот типа такого
today=date -u +'%d'
cal -m | grep $today
выведет текущую неделю, которую уже можно разбирать по дням - первый и последний елементы и будут граничными числами недели. При переходе через месяц нужно просто посчитать количество дней, которые надо дополнить до недели.
А я тут подумал, что можно делать вот типа такого
today=date -u +'%d'
cal -m | grep $today
выведет текущую неделю, которую уже можно разбирать по дням - первый и последний елементы и будут граничными числами недели. При переходе через месяц нужно просто посчитать количество дней, которые надо дополнить до недели.
Не шалю, никого не трогаю, починяю примус...
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 файла
З.Ы. Я его попроще написал, чтоб понятнее было
Re: Составляем скрипт
посмотрел
не то
2 Гарыныч
Большое спасибо
заработало
я догадывался, что в php или perl можно такое замутить, но ими не особо владею
доработаю и вставлю в свой скрипт как функцию
еще раз спасибо
Re: Составляем скрипт
(Alex_D @ Apr 21 2006, в 14:42) писал(а):Есть ли что-то готовое типа 27.02.2006 + 3 дня = 02.03.2006
Код: Выделить всё
date -d "2006/02/27 +3 days"
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
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"
<_<
блин, а я уже переписал скрипт
а сейчас заново надо
короче спасибо намного упростится задача
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Составляем скрипт
Столкнулся с необходимостью вырезать из файла некий кусок, на основании регулярного выражения. Данный кусок может быть (а может и не быть) многострочным. Не хотелось бы прибегать к помощи чего-то ещё кроме grep или sed (awk нежелателен). Но столкнулся с тем, что не могу заставить упомянутые программы работать со всем потоком сразу, не учитывая концов строк. Пропустить поток через tr, с целью удаления "\r\n" (файл виндовый, всё под Cygwin) перед grep тоже не сильно подходит. Возможно ли такое вообще?
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
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Составляем скрипт
Пожалуй, подойдёт. Спасибо.
Re: Составляем скрипт
Как убить процессы, имя исполняемого файла которых начинается на sv_. Одной коммандой.
Просто надоело список процессов ps aux |grep sv_
а потом kill -9 пид1 пид2 пид3...
Как это в 1 комманду объединить? =)
Просто надоело список процессов ps aux |grep sv_
а потом kill -9 пид1 пид2 пид3...
Как это в 1 комманду объединить? =)
ICQ 547097