Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 6

Скрипт поиска слов в любых файлах, в т.ч. docx, doc, xlsx, xls

16.05.2014, 22:18. Показов 7675. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Bash
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
#!/bin/sh
########################################################################################################################
# (C) A.N.Efremov, 2014 y., [email]efremovzone@yandex.ru[/email]
# Уважаемые дамы и господа, если Вы будете использовать этот скрипт или его часть, указывайте пожалуйста авторство.
########################################################################################################################
# (SE)arching (S)cripts, version 1.00
# Скрипт поиска слов в любых файлах, в т.ч. docx, doc, xlsx, xls
########################################################################################################################
var_Find=`which find`
var_Catdoc=`which catdoc`
var_Antiword=`which antiword`
var_Grep=`which grep`
var_Sed=`which sed`
var_Cat=`which cat`
var_Xls2csv=`which xls2csv`
var_Unzip=`which unzip`
var_Awk=`which awk`
var_FindPath=${1}
var_FileMask=${2}
var_FindString=${3}
 
fncHelp()
{
    printf "\n\rСинтаксис: "
    printf "`basename ${0}` Где_ищем \"Шаблон_имени_файла\" \"-e 'Строка_поиска'\"|\"-f Файл_со_строками_поиска\"\n\r\n\r"
    printf "Шаблон_имени_файла - передается в кавычках.\n\rНапример, \"*.doc\"\n\r"
    printf "Строка_поиска - передается вместе с переключателем в кавычках, синтаксис соответствует grep.\n\rНапример, \"-e 'конкретн\|мероприят'\"\n\r"
    printf "Файл_со_строками_поиска - передается вместе с переключателем в кавычках, синтаксис соответствует grep.\n\rНапример, \"-f ./words.txt\"\n\r"
    printf "Формирование words.txt - каждое искомое слово с новой строки\n\r"
    printf "Перед модификаторами -e и -f допускаются модификаторы grep. Например, поиск без учета регистра букв - \"-i -f ./words.txt\"\n\r\n\r"
}
fncCopyright()
{
    clear
    printf "\n\r(SE)arching (S)cripts, version 1.00\n\r(C) A.N.Efremov, 2014 y.\n\r\n\r"
}
 
fncCopyright
 
# Проверяем аргументы командной строки
if [ "$#" -lt 3 ]
  then
    printf "Не хватает аргументов в командной строке:\n\r"
    echo "Где ищем: [${var_FindPath}]"
    echo "Шаблон файла: [${var_FileMask}]"
    echo "Что ищем: [${var_FindString}]"
    fncHelp
    exit 1
fi
 
${var_Find} ${var_FindPath} -type f -iname "${var_FileMask}"|while read var_File;
  do
    case `echo ${var_File} | ${var_Awk} -F. '{print tolower($NF)}'` in
      docx)
    ${var_Unzip} -p ${var_File}|${var_Grep} '<w:t'|${var_Sed} 's/<[^<]*>//g'|${var_Grep} -v '^[[:space:]]*$'|${var_Grep} -H --label="${var_File}" --color -n ${var_FindString}
    ;;
      xlsx)
    ${var_Unzip} -p ${var_File}|${var_Grep} '<t'|${var_Sed} 's/<[^<]*>//g'|${var_Grep} -v '^[[:space:]]*$'|${var_Grep} -H --label="${var_File}" --color -n ${var_FindString}
    ;;
     doc)
    ${var_Catdoc} -w "${var_File}"|grep -H --label="${var_File}" --color -n ${var_FindString}
    ;;
      xls)
    ${var_Xls2csv} "${var_File}"|grep -H --label="${var_File}" --color -n ${var_FindString}
    ;;
      *)
    ${var_Cat} "${var_File}"|grep -H --label="${var_File}" --color -n ${var_FindString}
    ;;
    esac
done
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2014, 22:18
Ответы с готовыми решениями:

Работа с файлами в формате .doc, .docx, .xls, .xlsx
Добрый день! Подскажите, есть ли какая-то альтернатива COM-объектам для извлечения текста из форматов .doc, .docx, .xls, .xlsx? ...

Бесплатные либы для создания, редактирования PDF, DOCX, XLSX, XLS, DOC и конвертации их между собой
Существует ли бесплатная библиотека, которая позволяет делать все и сразу - создавать, редактировать и конвертировать документы форматов...

В одной учетной записи не открываются файлы *.doc *.xls (При этом все хорошо с *.docx *.xlsx)
Проблема проявляется только в одной учетной записи. В других эти же самые файлы отлично открываются. Для эксперимента ставил рядом с MS...

9
 Аватар для Amet13
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
17.05.2014, 07:51
Скрипт поиска слов в любых файлах
Bash
1
grep -R
И ещё, я использовал ваш скрипт и не указал авторства =(
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 6
17.05.2014, 15:14  [ТС]
К сожалению на форуме нет кнопки "Лучший глупый ответ", чтобы поставить его Вам.

Добавлено через 17 минут
Цитата Сообщение от Amet13 Посмотреть сообщение
grep -R
Необходимость заключается не в рекурсии поиска, а в поиске внутри docx, doc, xlsx, xls.
Читайте man по grep
0
Заблокирован
17.05.2014, 18:47
Да и скрипт не блещет. Контентный поиск надо смотреть в готовых видах, а не пытаться лопатить каждый формат руками для РОВНО ТОГО ЖЕ grep.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 6
17.05.2014, 22:00  [ТС]
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Да и скрипт не блещет. Контентный поиск надо смотреть в готовых видах, а не пытаться лопатить каждый формат руками для РОВНО ТОГО ЖЕ grep.
Если Вы только grep-ом разберете и найдете текст в docx, то мои Вам аплодисменты.
А блещет или не блещет - это и не полноценный контекстный поиск (кстати, Ваша грамотность по русскому языку тоже не блещет: "контентный" - это немного другое), а если у Вас есть желание потроллить - пожалуйста.
К тому же Вас никто не заставляет пользоваться данным скриптом, скрипт выложен был для тех, кому он может пригодиться, и обсуждения: "я напишу круче" не имеют смысла.
0
 Аватар для Amet13
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
17.05.2014, 22:03
Форум
Цитата Сообщение от efremovzone Посмотреть сообщение
обсуждения не имеют смысла.
Ну вы уж как-то разберитесь наверное. Свои наработки можете постить в жж или создать супер-крутой репозиторий на гитхабе, там его заценят гораздо лучше, нежели тут.
0
Заблокирован
17.05.2014, 22:05
efremovzone, ты вообще для чего его выложил тогда? Я тебе просто напоминаю что общее направление - универсальность, туда и надо идти, а не к разборке руками. Я подразумеваю cli/иной api к
http://www.linux.com/news/soft... s-compared
Или самописные с чистыми apiшными в духе sphinx.

А то так клепать изобретая велосипед можно долго, и почти всегда неоправданно.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 6
17.05.2014, 22:47  [ТС]
Цитата Сообщение от Amet13 Посмотреть сообщение
Ну вы уж как-то разберитесь наверное. Свои наработки можете постить в жж или создать супер-крутой репозиторий на гитхабе, там его заценят гораздо лучше, нежели тут.
Извините, я не знал, что данный форум создан не для помощи другим, я же не просил помощи и не создал тему: "Обсудите этот скрипт", возможно, кому-то он пригодится.
Если у Вас есть конкретные предложения по улучшению алгоритма, то напишите их, а то получается как в стихах: "...писать на стенах туалета...".

Добавлено через 9 минут
Цитата Сообщение от Dr_Quake Посмотреть сообщение
А то так клепать изобретая велосипед можно долго, и почти всегда неоправданно.
Да, не клепал я ничего, скрипт написан на коленке, для моих пользователей, которым у себя в папках нужно чего-нибудь найти в word или excel, здесь не подразумеваются никакие поисковые движки. Запустил - нашел - забыл.
А выложил я его, что кому-нибудь это может быть нужно, зачем лишний раз думать.
Я всегда предполагал, что форум - это еще база знаний.
Ну нет у меня ни своего сайта, ни дневника, ни однокласников.

Добавлено через 18 минут
Цитата Сообщение от Dr_Quake Посмотреть сообщение
А то так клепать изобретая велосипед можно долго, и почти всегда неоправданно.
Я помню, что когда начинаешь работать в linux, очень иногда трудно запомнить "однострочники", shell, регулярные выражения и т.д., я пользуюсь find|while...|что-то|grep, но начинающему пользователю сложно это понять и запомнить.

Добавлено через 5 минут
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Или самописные с чистыми apiшными в духе sphinx.
Для масштабных поисков документов использую Lucene или DPSearch, до Sphinx пока руки не дошли.
0
 Аватар для Amet13
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
17.05.2014, 23:37
efremovzone, думаете гитхаб хуже индексируется поисковиками чем киберфорум?
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 6
18.05.2014, 00:05  [ТС]
Цитата Сообщение от Amet13 Посмотреть сообщение
думаете гитхаб хуже индексируется поисковиками чем киберфорум?
Создается впечатление, что Вам уже больше нечего сказать, но последнее слово нужно оставить за собой.
Если это для Вас важно, то можете, что-нибудь написать на данное сообщение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2014, 00:05
Помогаю со студенческими работами здесь

Создание/склеивание doc\docx файла из шаблона doc\docx с заменой ключевых слов
Подскажите, как можно такое реализовать? Я узнал, что в rtf нельзя делать разрыв страницы, а просто как с текстовым файлом с doc и docx...

Как работать с файлами doc, docx,xlsx
Видел библиотеку ActiveQt, ну там про DOC я даже не понимаю как с ним раьотать, есть мейби пример, кучу времени облегчит ну или есть у...

Из файла xls/xlsx взять выбранную пользователем строку и создать документ docx
Здравствуйте! Возник довольно примитивный вопрос, но никак не получается найти ответ. Можно ли с помощью VBA провернуть следующую схему: из...

php скрипт HTML в DOC или DOCX
Может кто нибудь знает где взять нормальный скрипт для сабжа обрыл весь интернет, нашел всего два варианта, и оба не очень один...

Восстановление .doc, .xls, .ln4, .xml файлов после удаления. Нечитаемые крякозябры в doc
Прошу помощи! Ситуация такова: восстановленные файлы после удаления не отображаются правильно - word к примеру показывает крякозябры....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru