如何使用 grep 命令匹配特定模式?如果 grep 中指定的模式为“4”,则不应返回包含 44 的行

如何使用 grep 命令匹配特定模式?如果 grep 中指定的模式为“4”,则不应返回包含 44 的行

当我使用 grep 命令时,如下所示:

rollno=4
grep $rollno=4 new.txt

它返回包含 44 或 4444 或 24 等作为学号的记录。我该如何消除这个缺陷?

答案1

如果您有 GNU grep,那么grep -w 4将寻找仅由数字 4 组成的“单词”。

grep -w 4 <<eof
This line contains 4 all alone.
This line doesn't because of this 44.
This line contains '4' all alone too.
This line does not because 4x4 looks like a word.
eof

答案2

如果您的文件每行包含一条记录,则可以使用

grep -E "^4$"

-E选项告诉grep接受正则表达式,表达式中的^代表“行首”,$代表“行尾”。

答案3

查看此链接:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_02.html 如果不是以“roll number”开头,请使用“^”

答案4

检查是否4单独:

$ echo "4 24 4aa 44 74 4 9 kk4 09 4 yu4 4 " | tr ' ' '\n' | egrep '\b4\b'
4
4
4
4

相关内容