我有一个输出以下内容的 bash 脚本:
SUM = 137892134.0000000
我需要去掉字符串的第一部分,只留下数字,如果可能的话,将其格式化为整数。我假设我需要使用 sed 但我学习它的能力似乎为零。
我需要能够编写一个条件语句,该条件语句可以在值小于 100 时进行操作。我不知道是否可以在 bash 脚本中执行此操作,但这将是我挑战的第二部分。
最佳答案
sed 替换的基本形式是:
s/replace this/with this/
其中“replace this”和“with this”都是正则表达式。在您的情况下,您希望完全摆脱开头的文字字符串“SUM =”和末尾的小数点。所以:
#!/bin/bash
sum=$(your_script.sh | sed 's/^SUM = //' | sed 's/\..*//')
if ! egrep -q '^[0-9]+$' <<< $sum; then
echo "your_script.sh printed unexpected output!"
exit 1
fi
if [ $sum -lt 100 ]; then
echo "$sum is less than 100"
else
echo "$sum is not less than 100"
fi
第一行是将“SUM = 137892134.0000000”转换为“137892134”。第一个 sed 将字符串开头的“SUM =” (^
) 替换为空(即删除它)。第二个 sed 找到第一个句点字符 (\.
) 并将其及其后面的所有内容 (.*
) 替换为空。然后使用 $(...)
将结果字符串保存到变量 $sum
中。
使用egrep的if语句正在检查以确保我们保存在$sum
中的值实际上是一个整数,如果不是则跳过。
第二个 if 语句将 $sum 的值(我们现在知道它是一个整数)与 100 进行比较。
关于bash - 剥离管道输出的第一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438653/