bash - 修改管道输入
问题描述
想想字符串,例如:
I have two apples
He has 4 apples
They have 10 pizzas
我想用不同值的字符串替换我找到的每个数字,用外部脚本计算。就我而言,python 程序digit_to_word.py
将数字数字转换为字母格式,但一切都会好起来的,这样我就可以得到这个过程。
预期输出:
I have two apples
He has four apples
They have ten pizzas
从概念上讲:
echo "He has four apples" |
while read word;
do
if [[ "$word" == +([0-9+]) ]]; then
NUM='${python digit_to_word.py "$word"}'
$word="$NUM"
fi
done |
other_operation... | etc..
我从概念上说是因为我什至没有接近让它发挥作用。我什至很难找到关于这个问题的信息,仅仅是因为我不知道如何将它概念化。在这一点上,我主要是在推理过程替换,但恐怕这不是最好的方法。
任何可能非常有用的提示。提前感谢您与我分享您的知识!
解决方案
我建议这对 perl 来说是一个更好的工作。
要重新创建场景:
$ cat digit_to_word.sh
case $1 in
4) echo four;;
8) echo eight;;
10) echo ten;;
*) echo "$1";;
esac
$ bash digit_to_word.sh 10
ten
那么这个
perl -pe 's/(\d+)/ chomp($word = qx{bash digit_to_word.sh $1}); $word /ge' <<END
I have two apples
He has 4 apples
They have 10 pizzas but only 8 cookies
END
输出
I have two apples
He has four apples
They have ten pizzas but only eight cookies
但是,你已经有了一些 python,为什么不在 python 中实现替换部分呢?
推荐阅读
- postcss - 如何使用 postcss 在顺风中压缩文件大小?
- firebase - Firestore 增量、arrayUnion 和 arrayRemove 函数是否需要事务?
- python - 如何根据另一列中的值用另一列的平均值替换 NaN 值?熊猫
- flutter - I/flutter (8686): 另一个异常被抛出: NoSuchMethodError: The method 'save' was called on null
- tensorflow - 加载 SSD Inception v2 模型时 ML.NET 输入形状不匹配
- sql - 从 SQL 响应中读取 uniqueidentifier 时出现问题
- arrays - Mongodb通过键值更新嵌套数组
- python - 如何在熊猫中对数据类别进行汇总?
- python-3.x - ValueError:尺寸必须相等(keras)
- javascript - 执行 npm install angular-firebase --save 时出错