提取仅包含数字的行:
$ grep -x '[0-9][0-9]*' words >digits
Run Code Online (Sandbox Code Playgroud)
正则表达式[0-9][0-9]*将匹配任何包含至少一位数字的行,并且-x选项grep要求整行匹配给定的表达式。
如果您的文件没有空行,您可以将其更改为grep -x '[0-9]*'.
如果您想要带有numbers 的行,请删除带有字母字符的行(比尝试为通用数字构建正则表达式更容易):
$ grep -v '[a-zA-Z]' words >numbers
Run Code Online (Sandbox Code Playgroud)
使用 POSIX 字符类的两种变体:
$ grep -x '[[:digit:]][[:digit:]]*' words >digits
$ grep -v '[[:alpha:]]' words >numbers
Run Code Online (Sandbox Code Playgroud)
更新:如果要选择包含浮点数的行,可以使用(扩展)正则表达式^[+-]?([0-9]*\.)?[0-9]+$:
$ grep -x -E '[+-]?([0-9]*\.)?[0-9]+' words >floats
Run Code Online (Sandbox Code Playgroud)
这一切都归结为我们正在寻找什么样的“数字”。
删除任何包含字母 by 的行sed,然后将输出放入另一个文件:
sed '/[a-z]/Id' yourInputFile > yourOutputFile
Run Code Online (Sandbox Code Playgroud)
或者如果您想就地更改原始文件:
sed -i '/[a-z]/Id' yourInputFile
Run Code Online (Sandbox Code Playgroud)