Я настоящий начинающий сценарий csh/tcsh, и поэтому мне нужна ваша помощь. Проблема в том, что мне приходится проходить через обычные файлы в каталогах и находить те файлы, которые имеют собственное имя в своем контенте. В следующем фрагменте сценария есть цикл, в котором я просматриваю пути и используя grep, чтобы найти имя файла в его содержимом. Что, безусловно, верно, это что-то: q - это массив путей, где мне нужно найти файлы. Следующая переменная - это имя, в котором указано только имя текущего файла. например: /home/computer/text.txt (пути) и: text.txt (name) И моя самая большая проблема - найти имена файлов в их содержимом. Мне довольно сложно написать правильный grep для этого, потому что имена файлов и каталогов, которые я просматриваю, безумны. Вот некоторые из них:Выражение Grep со специальными именами файлов
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/!_1
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/dam/$user/:e/'/-r
/home/OS/pocitacove/testovaci_adresar/z/test3/skusime/ taketo/ taketo
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/.a=b
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/@
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/:
/home/OS/pocitacove/testovaci_adresar/z/test4.pre_expertov/.-bla/.-bla/'ano'
foreach paths ($something:q)
set name = "$paths:t"
@ number = (`grep -Ec "$name" "$paths"`)
if ($number != 0) then
echo -n "$paths "
echo $number
endif
@ number = 0
end
Непонятно мне, если ваш 'grep' предназначен для просмотра всех перечисленных файлов или просто просмотрите список имен файлов для нескольких совпадений. Если вы просматриваете список имен, затем записывайте список в файл, поэтому вам не нужно беспокоиться об экранировании метамарков, которые в настоящее время находятся в переменной $ path. Кроме того, '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. – shellter
В любом случае, я хочу сказать, что у вас может быть indvidual cmd, например 'grep '' ano '" "$ paths". Таким образом, вам придется сканировать каждое значение, присвоенное '$ name', и избегать метакаров в оболочках или регулярных выражениях. Вряд ли кто-нибудь сможет сделать эту работу отлично на любом языке оболочки. Поэтому рекомендуем вам отступить и посмотреть другие варианты. 'perl' разработан с учетом такого безумия, но добраться до этого уровня - это высокая кривая обучения. Возможно, другие будут комментировать возможные «python» или другие языки для этой задачи. Удачи. – shellter
Я могу использовать только csh/tcsh для этого проекта. и я должен заглянуть внутрь файлов, просматривая их содержимое и поиская имя текущего файла в его содержимом. – user2919185