Grep以数字结尾的行

时间:2017-11-25 14:00:56

标签: linux bash grep

我有一系列的行:

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

但这些都不起作用

3 个答案:

答案 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)

对于扩展正则表达式,您应该使用egrepgrep -E