从文本文件中提取所有数字并将其存储在另一个文件中



我有一个有很多行的文本文件。我想从该文件中提取所有数字。文件包含文本和数字,每行仅包含一个数字。如何在 bash 脚本中使用 sed 或 awk 来做到这一点?

我试过了

#! /bin/bash
sed 's/([0-9.0-9]*).*/1/' <myfile.txt >output.txt

但这没有奏效。

grep 可以处理这个问题:

grep -Eo '[0-9.]+' myfile.txt 

-o告诉只打印匹配项,[0-9.]+是匹配数字的正则表达式。

将所有数字放在一行并保存在输出中.txt:

echo $(grep -Eo '[0-9.]+' myfile.txt) >output.txt

文本文件通常应以换行符结尾。 使用上述echo可确保发生这种情况。

非 GNU grep:

如果您的 grep 不支持 -o 标志,请尝试:

echo $(tr ' ' 'n' <myfile.txt | grep -E '[0-9.]+') >output.txt

这将使用 tr 将所有空格替换为换行符(因此每个数字单独显示在一行上),然后使用 grep 搜索数字。

tr -sc '0-9.' ' ' "$file"

将每个非数字或句点字符字符串转换为单个空格。

你也可以使用 Bash:

while read line; do
    if [[ $line =~ [0-9.]+ ]]; then
        echo $BASH_REMATCH
    fi
done <myfile.txt >output.txt

相关内容

  • 没有找到相关文章