鉴于
34-2
34-5
34-3
我希望获得
34-2=28
34-5=29
34-3=31
或者,这也会有所帮助:鉴于:
34-2=5
34-5<=34
34-3=31
我希望获得
! 34-2=5
34-5<=34
34-3=31
哪里!有迹象表明不等式或等式为假。我正在寻找处理文本文件的东西。
答案1
第一起案件
perl -nle 'print $_."=".eval($_)' filewithexpressions
-n
循环遍历线条。-l
从 中删除换行符$_
,但用换行符分隔输出行。-e
定义要运行的表达式。$_
是“当前行”的占位符。.
连接字符串。eval()
将采用一个字符串并将其作为代码进行评估,因此例如eval('5+8')
返回13
。
第二种情况
正如我对原始问题的评论中所述,在文件中使用双等号:
perl -ne 'print eval($_)?" ":"!",$_' filewithequalities
和以前总体一样。
-l
是不需要/不想要的,因为在这种情况下换行符会自行处理。- 该
?:
构造是一个三元运算符如果前面的表达式为真,则返回空格,否则返回感叹号。
答案2
下面是一个用于处理问题第一部分的 Python 脚本:
import sys
for line in sys.stdin:
print "%s=%s" % (line.rstrip(), eval(line))
将上述代码放入test.py
,将输入放入test.dat
,然后像这样运行:
python test.py < test.txt
我假设是类 Unix 操作系统。请注意,将输入传递给任何正在运行的脚本都是很危险的eval
--- 不要将未知数据传递给此脚本。