如何在ksh中将字符串与点中的点完全匹配

use*_*926 2 regex grep

在尝试grep查找包含点的字符串时,我无法获得完全匹配的字符串作为输出.

例如: grep "APPLICATION.REFERENCE.LOCAL" <FILENAME>

我甚至尝试过:

grep -F 'APPLICATION.REFERENCE.LOCAL' <FILENAME>它还显示类似匹配的行APPLICATION.REFERENCE.LOCAL1.

请帮我.

dev*_*ull 7

由于您正在使用-F将模式解释为固定字符串,因此您需要提供-x与整行完全匹配的选项.

grep -Fx 'APPLICATION.REFERENCE.LOCAL' filename
Run Code Online (Sandbox Code Playgroud)

来自man grep:

   -F, --fixed-strings
          Interpret PATTERN as a  list  of  fixed  strings,  separated  by
          newlines,  any  of  which is to be matched.  (-F is specified by
          POSIX.)

   -x, --line-regexp
          Select  only  those  matches  that exactly match the whole line.
          (-x is specified by POSIX.)
Run Code Online (Sandbox Code Playgroud)

例:

$ cat file
APPLICATION.REFERENCE.LOCAL
1APPLICATION.REFERENCE.LOCAL
APPLICATION.REFERENCE.LOCAL1
APPLICATION.REFERENCE0LOCAL
$ grep -Fx 'APPLICATION.REFERENCE.LOCAL' file
APPLICATION.REFERENCE.LOCAL
Run Code Online (Sandbox Code Playgroud)


Flo*_*ris 5

你需要用反斜杠转义点:

grep 'APPLICATION\.REFERENCE\.LOCAL'
Run Code Online (Sandbox Code Playgroud)

如果你想在行中“只和这个”,你需要用“字符串的开头和结尾”字符来锚定:

grep '^APPLICATION\.REFERENCE\.LOCAL$'
Run Code Online (Sandbox Code Playgroud)