Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помогите написать скрипты на bash  (Прочитано 1851 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн otygsvart

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
1. Из текущего каталога и всех подкаталогов удалить файлы, в именах которых имеется вторая буква ‘a’. (делается через sed)
Выглядит примерно так:

#!/bin/bash
function MyFun
{
cd $1
ls -A | while read file
do
if [[ -d $file ]]; then
(MyFun $file )
else
echo $file | grep "[a-z] [a]"
if [[ $? == 0 ]]; then
   echo "File=$file Rezult=$?"
   newfile=`echo $file | sed "s/[a-z] [a] d/"`
   echo "Newfile=$newfile"
   mv $file $newfile
   fi
   fi
done
}
MyFun .$Sym $NewSym

2. В файле телефонного справочника (фамилия телефон) заменить в фамилиях предпоследнюю букву  ‘k’ на ‘nk’. (через AWK)
Выглядит примерно так:
BEGIN {
#print "Start AWK";
FS=" ";
i=0;
}
{
#print $1,$2;
#$1~/k$/ {print $1}
if ($1~/k$/){
i++;
sub("k$", "nk", $1);
print  $1,$2;
}
else {
print $1,$2;}
}
END {
#print "End AWK"
#print "i=", i
}

Коды скриптов соответственно неправильные. Очень прошу помочь. Спасибо заранее.

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #1 : 01 Июня 2010, 23:32:47 »
man sed
man awk

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите написать скрипты на bash
« Ответ #2 : 01 Июня 2010, 23:36:20 »
1. Из текущего каталога и всех подкаталогов удалить файлы, в именах которых имеется вторая буква ‘a’.

find -name "?a*" -type f -exec rm '{}' \;
« Последнее редактирование: 02 Июня 2010, 01:48:32 от ArcFi »

Оффлайн otygsvart

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #3 : 01 Июня 2010, 23:46:46 »
А можно полный код скрипта?

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Помогите написать скрипты на bash
« Ответ #4 : 01 Июня 2010, 23:48:12 »
find -name ?a* -type f -exec rm '{}' \;Фигасе коряка. Вот поэтому я и люблю паскаль :D

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #5 : 01 Июня 2010, 23:58:03 »
find -name ?a* -type f -exec rm '{}' \;Фигасе коряка. Вот поэтому я и люблю паскаль :D
Скрипты на паскале, оригинально. :)
xUbuntu 12.04

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #6 : 02 Июня 2010, 00:02:23 »
А можно полный код скрипта?
это он и есть )))
что, не верится?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите написать скрипты на bash
« Ответ #7 : 02 Июня 2010, 00:02:39 »
А можно полный код скрипта?

#!/bin/bash

find "$1" -name "?a*" -type f -exec rm '{}' \;
exit 0
« Последнее редактирование: 02 Июня 2010, 01:42:53 от ArcFi »

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Помогите написать скрипты на bash
« Ответ #8 : 02 Июня 2010, 00:10:12 »
(Нажмите, чтобы показать/скрыть)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net

Оффлайн otygsvart

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #10 : 02 Июня 2010, 00:23:28 »
Спасибо большое. Надеюсь, будет работать. Сейчас нет возможности проверить. Есть какие-либо соображения по второму заданию?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите написать скрипты на bash
« Ответ #11 : 02 Июня 2010, 00:59:00 »
2. В файле телефонного справочника (фамилия телефон) заменить в фамилиях предпоследнюю букву  ‘k’ на ‘nk’.
#!/bin/bash

sed -i 's/k\(. \)/nk\1/g' "$1"
exit 0

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #12 : 02 Июня 2010, 01:35:40 »
#!/bin/bash

find $1 -name "?a*" -type f -exec rm '{}' \;
exit 0
Нужно экранировать ?a* а то bash его заменит на список всех файлов в текущей директориии удовлетворяющим этому шаблону, что приведёт к неожиданным результатам  :)

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите написать скрипты на bash
« Ответ #13 : 02 Июня 2010, 01:46:43 »
Нужно экранировать ?a*...
thnx, fixed
also "$1"
« Последнее редактирование: 02 Июня 2010, 02:11:07 от ArcFi »

Оффлайн otygsvart

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Помогите написать скрипты на bash
« Ответ #14 : 02 Июня 2010, 17:38:37 »
Попробовал запустить оба скрипта - не сработало. Выскочила ошибка : bad interpreter: No such file or directory. В чём может быть дело?

 

Страница сгенерирована за 0.041 секунд. Запросов: 25.