Мне необходимо найти все строки, которые начинаются с заглавной буквы И заканчиваются словом «собака», за которым следует точка.
Я знаю, что для поиска строк, начинающихся с заглавной буквы, я бы сделал: egrep ^ [A-Z] filename
И чтобы найти строки, заканчивающиеся на «собаку». Я бы сделал: egrep dog. $ Filename
Однако, как бы я сделал их вместе? Я пробовал: egrep ^ [A-Z] * dog. $ Filename
, но это не похоже на работу. При подстановке имени файла символ * представляет собой строку любой длины или даже без строки.
Вам нужно написать следующую схему: [A-Z]. * Собака.
[A-Z] ожидает, что заглавная точка означает, что это любой символ. То, как у вас есть «*», означает, что столько заглавных букв. Если вам нужны буквы алфавита, то вместо «.» положить [а-я]. Звезда не работает как подстановочный знак, как в командной строке bash, но скорее учитывает предыдущий символ.
Я надеюсь, что это было полезно.
Вам, вероятно, нужно это:
grep '^[[:upper:]].*dog\. Вы, вероятно, уже знаете якоря ^
(для начала строки) и $
(для конца строки). Вместо того чтобы использовать [A-Z]
, вам лучше использовать класс [[:upper:]]
, так как он может лучше справляться с выделенными заглавными буквами (учтите, что если ваш вопрос касается домашней работы, ваш учитель может не знать об этом - мой опыт что курсы командной строки в школах - одно из худших из существующих учений, учителя обычно некомпетентны в этом, поскольку они используют древние методы ... (плохие) привычки умирают тяжело!).
Затем вы ищете .*
, где точка .
соответствует любому символу, а затем .*
означает любое число любого символа.
Наконец, вам нужен экранированный период \.
, иначе строка, заканчивающаяся на dogs
или dog!
, будет соответствовать ..., поскольку период без экранирования соответствует любому символу.
Надеюсь, это поможет!
file
Вы, вероятно, уже знаете якоря ^
(для начала строки) и $
(для конца строки). Вместо того чтобы использовать [A-Z]
, вам лучше использовать класс [[:upper:]]
, так как он может лучше справляться с выделенными заглавными буквами (учтите, что если ваш вопрос касается домашней работы, ваш учитель может не знать об этом - мой опыт что курсы командной строки в школах - одно из худших из существующих учений, учителя обычно некомпетентны в этом, поскольку они используют древние методы ... (плохие) привычки умирают тяжело!).
Затем вы ищете .*
, где точка .
соответствует любому символу, а затем .*
означает любое число любого символа.
Наконец, вам нужен экранированный период \.
, иначе строка, заканчивающаяся на dogs
или dog!
, будет соответствовать ..., поскольку период без экранирования соответствует любому символу.
Надеюсь, это поможет!