это строка поиск был предоставлен Paul.R (высоко ценится Paul):Shell Строка поиска скрипта, где «#» не в 1-го символа позиция
** найти реж -типа х -print0 | xargs -0 grep -F -f strings.txt **
Примечание. Я использую приведенный выше аргумент поиска, чтобы выполнить поиск в рекурсивном каталоге поиска жестко закодированных имен путей в сценариях оболочки. Однако из-за ограничений среды Unix (TRU64) я не могу использовать ключ GREP -r для выполнения поиска в моем каталоге. Следовательно, использование приведенного выше решения.
В качестве дополнительных критериев я хотел бы расширить этот аргумент поиска, чтобы исключить любой текст, где первый главный символ искомой строки является «#» (символ комментария).
Пойду за отзыв.
... Спасибо Эван
Patrick, спасибо за отзыв. К сожалению, это не совсем так. Исходная команда, которую я отправил, выводит имя пути и файл, которому принадлежит строка, начиная с первой позиции символа. Мне нужно это, чтобы идентифицировать скрипты, которые удовлетворяют моим критериям поиска. Если я grep набор результатов, символ комментария может существовать в любой позиции символа. Я понимаю, что я могу в этом случае опустить символ «^», однако как я могу отличить использование «#» как часть комментария, а не символ на любой части этой строки? –
То, что я пытаюсь достичь, сначала отфильтровать все строки, у которых есть комментарий, начинающийся в позиции 1 всех скриптов, а затем передать этот результат в поиск имен путей в этих сценариях. –
1. Чтобы отфильтровать данные, в которых хэш действует, чтобы сигнализировать комментарий, но не там, где хеш действует как символ, вам нужно выяснить, что в коде сигнализирует, что хэш действует как символьный литерал. 2. Это команда для одноразового проекта (где мы могли бы сделать несколько проходов) или использовать его для какой-либо другой цели? Мне пришлось немного убрать ваш оригинальный пост, но помогает ли это (вы можете повторно вставить второй grep, чтобы получить функциональность, которую я удалил - find. -type f -print0 | xargs -0 cat | grep -v '^ [ \ t] * # '| grep -v^$ - это должно вас начать –