我有一系列的行:
Spend: 4,100
Spend2: 2,200
Spend3: 300
Spend4: 1,590
Spend5:
我正在尝试grep
只有以数字结尾的行
我试过
grep "[0-9]+$" filename.txt > filtered.txt
grep "\d$" filename.txt > filtered.txt
但这些都不起作用
答案 0 :(得分:2)
传统的+
不支持grep
运算符,其正则表达式的表达非常有限。
你真正关心的是最后一个字符是否是数字,所以
grep '[0-9]$' filename.txt
应该做你想做的事。其他方法包括
grep -E '[0-9]+$' filename.txt # use extended regex repertoire
grep '[0-9]\+$' filename.txt # POSIX BRE extended
grep -P '\d+$' filename.txt # PCRE extended; not portable
注意我如何使用单引号。双引号引入了额外的复杂性,特别是你可能想要避免的反斜杠。
答案 1 :(得分:0)
在基本正则表达式模式下,您应该按以下方式指定模式:
grep '[0-9]\+$' filename.txt > filtered.txt
在基本正则表达式中,元字符“
?
”,“+
”,“{
”,“|
”, “(
”和“)
”失去了他们的特殊含义;而是使用backslashed 版本“\?
”,“\+
”,“\{
”,“{1}}”,“\|
”和“\(
”。
答案 2 :(得分:0)
对于扩展正则表达式,您应该使用egrep
或grep -E
。