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