Если вы хотите, чтобы соответствовать точной строке files*.txt
, это было бы:
# match exactly "files*.txt"
grep -e "files[*][.]txt" "$myTestFile"
... или, проще говоря, используя fgrep
сопоставлением только точная строка Дано:
# match exactly "files*.txt"
fgrep -e 'files*.txt' "$myTestFile"
[*]
определяет класс символов только с одним символом - *
- содержит и, таким образом, соответствует только одному символу. Также возможно экранирование с обратным слэшем, но может иметь разные значения в разных контекстах и, следовательно, менее надежным.
Если вы хотите, чтобы соответствовать любой строке, которая содержит files
, а позже .txt
, то:
# match any line containing "files" and later ".txt"
grep -e "files.*[.]txt" "$myTestFile"
.*
соответствует нулевой или-больше символов, и является, таким образом, регулярное выражение эквивалентно глобальном масштабе осуществление образец *
. Аналогично, в то время как в шаблоне glob .
соответствует только самому себе, в регулярном выражении .
может соответствовать любому символу, поэтому .
в .txt
должен быть экранирован, как в [.]txt
, чтобы он не соответствовал чему-либо еще.
Да, работайте как grep 'files *' $ myTestFile, но не с .txt в конце –
Вы имеете в виду, что буквально нужно соответствовать 'files * .txt', или это также может быть, скажем,' filesfoo.txt '? И вы имеете в виду '.' в смысле glob, где он соответствует только буквенному'.'или в смысле регулярного выражения, где он соответствует любому символу? В этом смысле, вы имеете в виду '*' в смысле регулярного выражения, где это означает «0-или-больше' '' '' '' 'или в шаблоне, где это означает« соответствовать чему-либо »? –
Ничего особенного ksh здесь, кстати, за исключением того, что вы используете оболочку, которая следует за правилами расширения POSIX с использованием '$ myTestFile' без окружающих кавычек, является ошибкой (попробуйте передать имя файла с пробелами таким образом). Поведение «grep» определяется вашей операционной системой, а не вашей оболочкой, говорящей нам, какая у вас оболочка не дает много подсказок о том, какой у вас «grep». –