больше файла

param1 = "1, deerfntjefnerjfntrjgntrjnvgrvgrtbvggfrjbntr rfr4fv frfftrjgtrignmtignmtyightygjn 2,3,4,5,6,7,8,
rfcmckmfdkckemdio8u548384omxc, mor0ckofcmineucfhcbdjcnedjcnywedpeodl40fcrcmkedmrikmckffmcrffmrfrifmtrifmrifvysdfn»

необходимо сопоставить содержимое $ param1 в файле, но это не работает, например, файл sed -n "/$ param1/p"
или любой файл grep $ param1 и т.д ...

какие-либо другие решения? может быть с Perl?

1 ответ1

0

Трудно помочь без точного сценария, который вы запускаете, но один момент, чтобы проверить:

Значение для "param1", которое вы опубликовали, содержит символы звездочки ("*"). Они имеют особое значение для sed и grep (и perl, и вообще в любом регулярном выражении). Чтобы они соответствовали буквальным символам, вам обычно нужно "экранировать" их, добавляя обратную косую черту.

Поэтому вместо «aa * b» вам понадобится «aa * b». Попробуйте сначала, чтобы увидеть, помогает ли это.

Предостережение: оболочка также будет обрабатывать \, поэтому при использовании его в качестве значения параметра поместите значение в '', как:

param1='basldafsd\*asdfsadf'

'' Защитит специальные символы от оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .