📜  sed 数字 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:03.513000             🧑  作者: Mango

SED数字 - Shell-Bash

sed 是一种流编辑器,可以使用它来进行基础文本转换。sed 命令通常应用于文本操作、数据处理以及 Shell 脚本编写,它可以在这些场景中起到非常重要的作用。

其中重要的一个应用场景就是对数字的处理。在本文中,我们将介绍如何使用 sed 进行数字的相关操作,并给出一些常见的示例。

如何使用 sed 进行数字操作

sed 可以处理文件、管道等等,我们可以在命令中使用正则表达式来对数字进行操作。常见的数字操作包括以下几种:

删除行中数字以外的内容
sed 's/[^0-9]*//g' filename   # 删除filename中每行数字以外的内容
echo "abc123def" | sed 's/[^0-9]*//g'  # 删除字符串中非数字的字符

上述命令中的正则表达式 [^0-9]* 表示匹配除数字以外的任何字符,s 表示替换操作,g 表示全局替换。

在行首或行尾添加数字以外的字符
sed 's/^/prefix/' filename   # 在filename中每行行首添加"prefix"
sed 's/$/suffix/' filename   # 在filename中每行行尾添加"suffix"

上述命令中 ^ 表示匹配行首,$ 表示匹配行尾。

提取数字
sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g' filename  # 提取filename每行中的数字
echo "abc123def" | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g'  # 提取字符串中的数字

上述命令中的括号 () 表示分组,\1 表示取出第一个分组捕获的内容。

数字求和
sed -n 's/.*\([0-9]\+\).*/\1/p' filename | awk '{sum+=$1} END {print sum}'  # 对filename中数字求和
echo "123 456" | sed -n 's/.*\([0-9]\+\).*/\1/p' | awk '{sum+=$1} END {print sum}'   # 对字符串中数字求和

上述命令中的 -n 表示禁止 sed 自动打印模式空间中的内容,p 表示打印匹配成功的行。

结尾

以上是常见的数字处理操作,sed 在文本处理中还有很多其他应用场景。如果你有更多 sed 的经验,欢迎在评论区分享。