Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Script vim / 5 сообщений из 5, страница 1 из 1
03.08.2011, 05:17
    #37377972
Avatar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Script vim
Всем доброго здоровья.
Есть у меня задумка, раз в месяц собирать объем почтовых ящиков и отсылать его себе на почту. Выполняю четыре ручных действий в vim для получения удобного для себя файла. Как мне действия выполняемые в vim запихать в какой-нибудь скрипт?

1) Получаем список каталогов больше 10Mb
du -sh /var/CommuniGate/Accounts/* | sort -rn | grep M | grep -v "," > /home/user/AccSize.txt

2) С помощью VI редактируем получившийся файл:

- Удаляем все строки, содержащие 2 цифры и букву M. Остаются ящики более 99Mb
:g/\<\d\dM\>/d

- Заменяем концовку ящиков(.macnt) на @usk.domain.ru
:%s/.macnt/@usk.domain.ru/g

- Убираем начальные символы: первые 3 цифры и букву M
:%s/\<\d\d\dM\>//g

- Убираем начальные пробелы и путь (/var/CommuniGate/Accounts)
:%s/\s\/var\/CommuniGate\/Accounts\///g
...
Рейтинг: 0 / 0
05.08.2011, 11:43
    #37382138
Avatar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Script vim
Народ, дай какую-нибудь идею!!!
...
Рейтинг: 0 / 0
05.08.2011, 13:17
    #37382385
tempestadept
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Script vim
Удалить строки можно хоть ещё одним grep-ом, хоть sed-ом, сделать замены - sed-ом.
...
Рейтинг: 0 / 0
05.08.2011, 17:21
    #37382833
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Script vim
как скриптовать vim? Можно просто Here Document:


Код: plaintext
1.
2.
3.
4.
5.
vi -e myfile.txt << FFF
%s/\<\d\d\dM\>//g
w
q
FFF


или именно скрипт

cat script.txt
:%s/\<\d\d\dM\>//g
:w
:q


vi -s script.txt myfile.txt
...
Рейтинг: 0 / 0
05.08.2011, 20:01
    #37383033
basename
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Script vim
Как пример, может поможет

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
#!/bin/bash
#
sname=mx
archdir=/tmp/arch/msize
tdate=`date '+%d-%m-%Y'`
success="Mailboxes size for each user in example.com"
email=root
#
# Define variables
mdir=/var/spool/imap
#

#echo -n "Check $archdir... press Enter:"
#read

if [ ! -d $archdir ] ; then
    mkdir -p $archdir
    chown root.root $archdir
    chmod  750  $archdir
fi

#echo -n "Purge $archdir... press Enter:"
#read

for file in `ls $archdir`
    do
      rm -f $archdir/$file
    done
              
#echo -n "Start calculate mailboxes size... press Enter:"
#read

cd $archdir

for dir in `ls $mdir --hide=lost+found --hide=stage. --hide=sync.`
    do
	for mbox in `ls $mdir/$dir/user`
	    do 
		du -sh $mdir/$dir/user/$mbox >> $archdir/mboxes-$tdate.size
	    done
    done

echo "" >> $archdir/mboxes-$tdate.size
echo "Total size:" >> $archdir/mboxes-$tdate.size
du -sh --exclude=lost+found --exclude=stage. --exclude=sync. $mdir >> $archdir/mboxes-$tdate.size

#echo -n "Start report... press Enter:"
#read

report() {
    touch $archdir/report
    echo "Mailboxes size for each user:" >> $archdir/report
    echo "" >> $archdir/report
    cat $archdir/mboxes-$tdate.size >> $archdir/report
    echo "" >> $archdir/report
    echo "`date`"  >> $archdir/report
    cat $archdir/report | mail -s "$success" $email
    }

report

#echo -n "Remove local bak files... press Enter:"
#read

for file in `ls $archdir --hide=report`
    do
      rm -f $archdir/$file
    done

#echo -n "End... press Enter:"
#read

...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Script vim / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]