Perl 如何对ksh中的变量进行精确的单词匹配?
我使用以下语法作为ksh脚本的一部分来验证文件中的Perl 如何对ksh中的变量进行精确的单词匹配?,perl,ksh,Perl,Ksh,我使用以下语法作为ksh脚本的一部分来验证文件中的行中是否存在单词Validation [[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]] && print "match Validation" 这种语法的问题是,它还匹配诸如Valid或ValidationVALID等词。我的目标是精确匹配变量$LINE\u FROM\u FILE中的单词Validation [[ "${LINE_FROM_FILE##*
行中是否存在单词Validation
[[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]] && print "match Validation"
这种语法的问题是,它还匹配诸如Valid
或ValidationVALID
等词。我的目标是精确匹配变量$LINE\u FROM\u FILE
中的单词Validation
[[ "${LINE_FROM_FILE##*Validation}" != "${LINE_FROM_FILE}" ]] && print "match Validation"
我询问是否也可以在我的脚本中使用Perl语法来精确匹配单词Validation
,例如:
[[ ` some perl command ` = Validation ]] && print "match Validation"
如果您使用bash,那么您很幸运:
例如:
input=$1
if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
# ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
echo "Social Security number."
# Process SSN.
else
echo "Not a Social Security number!"
# Or, ask for corrected input.
fi
测试行是否包含单词分隔字符之间的单词。一个有用的技巧是在字符串的开头和结尾添加一个单词分隔符,以防单词位于字符串的开头或结尾
[[ " $LINE_FROM_FILE " == *[![:alnum:]]Validation[![:alnum:]]* ]]
这假定单词仅由字母和数字组成。如果定义不同,请调整图案
请注意,您编写的测试,[[“${LINE_FROM_FILE##*Validation}”!=“${LINE_FROM_FILE}”]
,是一种复杂的编写[[$LINE_FROM_FILE=*Validation*]
(即,检查验证
作为子字符串)。您是否有相关的示例来匹配验证词