我正在为我的班级做一个Unix任务,我遇到了一些问题。我们正在尝试输出数字在20-30之间的行。
有没有办法使用grep
或egrep
,以便您可以输出具有限制数字的行,例如20到30之间的数字或小于25的数字?
答案 0 :(得分:1)
这应该做:
grep '\(^\|\D\)\(2[0-9]\|30\)\(\D\|$\)' input
或类似地:
grep '\(^\|[^0-9]\)\(2[0-9]\|30\)\([^0-9]\|$\)' input
或-P
标志:
grep -P '(^|[^0-9])(2[0-9]|30)([^0-9]|$)' input
所以基本上,想一想你想要匹配的可能字符串并将它们表达为模式。
答案 1 :(得分:1)
您可以将这个简单的grep与正则表达式
一起使用$-grep -wE '(2[0-9]|30)' file_name
答案 2 :(得分:0)
要获取20-30之间的值,可以使用此
egrep -e "[^0-9]2[0-9][^0-9]" -e "[^0-9]30[^0-9]" <file_name>
答案 3 :(得分:0)
您可以尝试以下命令:
grep -wE '\b[2]{1}[0-9]{1}\b|30' file
说明:
[2]{1} --> find a number starting with one 2
[0-9]{1} --> The "2" is follored by any number but only repeated once
|30 --> And also finds "30" number.