如何从Linux Shell脚本的edbplus输出中仅提取整数计数结果?
提取edbplus查询结果中的整数计数
我来帮你解决这个问题——你遇到的情况是edbplus返回的结果里混进了冗余的错误提示,导致输出既有计数数字又有无关内容。我们可以通过在命令管道里添加文本过滤工具,直接提取出需要的整数数值。
修改后的完整脚本
#!/bin/sh # 用$()替代反引号,可读性更强,避免嵌套问题 COUNT=$(./edbplus.sh -silent user/password@localhost:5444/mydb<<-EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT COUNT(ID) FROM MYTABLE EXIT; EOF | grep -Eo '[0-9]+') echo $COUNT
关键步骤解释
核心过滤逻辑:
我们在edbplus的输出后追加了grep -Eo '[0-9]+',其中:-E启用扩展正则表达式支持-o只输出匹配到的内容(而非整行)[0-9]+匹配一个或多个连续数字,刚好对应我们需要的计数结果
可选替代方案:
如果你更习惯使用sed,也可以把过滤部分替换为:| sed -n 's/.*\([0-9]\+\).*/\1/p'这个命令会把整行内容替换成捕获到的数字片段,仅输出处理后的结果。
小细节优化:
把原来的反引号`替换成$()来捕获命令输出,这种写法可读性更强,也能避免嵌套命令时的语法冲突。
为什么这个方法有效?
你的原始输出是6-------------------d always takes 2 parameters: variable_name value,其中数字6是唯一的连续数字序列,上述过滤工具会精准匹配并提取它,完全忽略后续的冗余错误提示。
内容的提问来源于stack exchange,提问作者Lucas Pires
相关产品推荐
相关产品推荐

