Perl 如何对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##*

我使用以下语法作为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}" ]] && 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*]
(即,检查
验证
作为子字符串)。

您是否有相关的示例来匹配验证词