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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Подскажите подходящую команду bash [РЕШЕНО]  (Прочитано 1234 раз)

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

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Конвертировал словари Lingvo 11 из lsd в dsl формат. Работа рутинная, т.к. через GUI и по одному словарю. Все словари, и старые, и новые, лежат в одной папке. Проверил количество:
$ ls *.lsd | wc -l
77
$ ls *.dsl | wc -l
75
Понятно, что где-то ошибся, не доконвертировал. Всего там 230 файлов. Конечно, можно просмотреть внимательно, так сказать, вручную, какие именно пропустил, но хочется сделать через bash. И надежнее, да и для изучения.
Думаю сделать приблизительно так:
$ ls *.lsd > file1              # список оригинальных словарей
$ ls *.dsl > file2              # список сконвертированных словарей
$ cat file1 file2 > file3     # объединяем в один список; одинаковые записи дублируются
$ sort file3 | uniq -u        # сортируем список и отсеиваем дублирующиеся записи
Наверняка, можно сделать и поизящнее, но это на один раз, думаю, сойдет. Единственное, не знаю, как избавиться от расширений файлов, т.к. в таком виде ничего не получится. Нужно что-то вроде этого:
$ ls *.lsd | (здесь нужна команда, отбрасывающая расширения файлов) > file1
Может быть есть какая-нибудь опция у команды ls, выводящая файлы без расширений, может быть нужно использовать awk (посмотрел справку - там слишком много опций, нужно сидеть и изучать), или еще что-нибудь?
« Последнее редактирование: 24 Июля 2010, 23:06:29 от Jack Sparrow »
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

Оффлайн Molibden

  • Участник
  • *
  • Сообщений: 184
    • Просмотр профиля
Re: Подскажите подходящую команду bash
« Ответ #1 : 24 Июля 2010, 21:21:57 »
Параметр awk -F определяет какой символ использовать в качестве разделителя, указываем точку:
ls squid.conf | awk -F. '{print $1}' выдаст squid
« Последнее редактирование: 24 Июля 2010, 23:04:12 от Molibden »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Подскажите подходящую команду bash
« Ответ #2 : 24 Июля 2010, 21:51:03 »
ls * | while read ; do echo "${REPLY%.*}" ; done | uniq -c | grep '^ *1'

Оффлайн Jack Sparrow

  • Автор темы
  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Подскажите подходящую команду bash
« Ответ #3 : 24 Июля 2010, 23:05:36 »
Попробовал сначала по своему методу, с awk -F .
Все получилось, нашел сразу два файла.
Потом попробовал скрипт от ArcFi. Тоже получилось, только нашел и другие файлы, с другими расширениями (не lsd или dsl). Причем некоторые были во вложенной директории. Правда, сам скрипт так и не понял (REPLY% и grep '^ *1').

Всем спасибо.

PS. ArcFi, сколько нужно потратить человеко-часов или лет, чтобы также, сходу, писать скрипты?
Нейросети тебя не заменят. Тебя заменит человек, который умеет ими пользоваться.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Тоже получилось, только нашел и другие файлы, с другими расширениями (не lsd или dsl).
Скрипт листает каталог, отбрасывает расширения и выводит уникальные имена файлов. Предполагается, что ничего лишнего в каталоге нет.

сколько нужно потратить человеко-часов или лет, чтобы также, сходу, писать скрипты?
А кто его знает... %)  За год наверно можно осилить, даже специально особо не обучаясь, а решая повседневные рутиные десктопные задачки и таская примеры из гугла.
« Последнее редактирование: 24 Июля 2010, 23:33:52 от ArcFi »

 

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