当我使用 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