标签: expr

在shell脚本中使用expr进行乘法运算

我正在制作一个基本计算器来进行加,减,乘和除.

加法有效,但不是乘法.当我试图繁殖时,我得到"你没有正确运行程序"的回复:

$ ./calculator 4 + 5
9
$ ./calculator 4 * 5
You did not run the program correctly
Example: calculator 4 + 5
Run Code Online (Sandbox Code Playgroud)

我在google上搜索过,在那里我找到了\\*代码,但仍然无法正常工作.有人能为我提供解决方案或解释吗?

这是我的代码

#!/bin/bash

if [ $# != 3 ]; then  
  echo You did not run the program correctly   
  echo Example: calculator 4 + 5                
  exit 1 
fi

if [ $2 = "+" ]; then    
  ANSWER=`expr $1 + $3`    
 echo $ANSWER 
fi

if [ $2 = "*" ]; then
  ANSWER=`expr $1 \\* $3`  
  echo …
Run Code Online (Sandbox Code Playgroud)

unix linux bash shell expr

8
推荐指数
2
解决办法
7万
查看次数

用 replace_regex 替换 pyspark 中的括号

+---+------------+
|  A|           B|
+---+------------+
| x1|        [s1]|
| x2|   [s2 (A2)]|
| x3|   [s3 (A3)]|
| x4|   [s4 (A4)]|
| x5|   [s5 (A5)]|
| x6|   [s6 (A6)]|
+---+------------+
Run Code Online (Sandbox Code Playgroud)

想要的结果:

+---+------------+-------+
|A  |B           |value  |
+---+------------+-------+
|x1 |[s1]        |[s1]   |
|x2 |[s2 (A2)]   |[s2]   |
|x3 |[s3 (A3)]   |[s3]   |
|x4 |[s4 (A4)]   |[s4]   |
|x5 |[s5 (A5)]   |[s5]   |
|x6 |[s6 (A6)]   |[s6]   |
+---+------------+-------+
Run Code Online (Sandbox Code Playgroud)

当我应用下面的每个代码时,它们之前的括号和空格没有被替换:

from pyspark.sql.functions import expr
df.withColumn("C",
               expr('''transform(B, x-> regexp_replace(x, ' \\(A.\\)', ''))''')).show(truncate=False)
Run Code Online (Sandbox Code Playgroud)

或者

df.withColumn("C", …
Run Code Online (Sandbox Code Playgroud)

python regex expr pyspark

5
推荐指数
1
解决办法
696
查看次数

MongoDB 查找具有多个 eq 的 expr

这个应该按月过滤结果的查询似乎工作正常。但我不知道如何添加年份过滤器。

db.collection.find({
  "$expr": {
    "$eq": [{ "$month": "$timestamp" }, 12]
  }
});
Run Code Online (Sandbox Code Playgroud)

我试图想出这样的东西,但没有成功。

db.collection.find({
  "$expr": {
    "$and": [
      { "$eq": [{ "$month": "$timestamp" }, 12] }, 
      { "$eq": [{ "$year": "$timestamp" }, 2018] }
    ]
  }
});
Run Code Online (Sandbox Code Playgroud)

如何正确地做到这一点?

javascript find mongodb node.js expr

4
推荐指数
2
解决办法
4135
查看次数

语法错误 expr

为什么以下返回语法错误:

stringZ=abcABC123ABCabc
echo `expr match "$stringZ" 'abc[A-Z]*.2'`
Run Code Online (Sandbox Code Playgroud)

这适用于我的 ubuntu 机器,但是当我在运行 OS X 10.9.4 的 mac 上尝试时,我得到了expr: syntax error

bash expr

3
推荐指数
1
解决办法
7789
查看次数

懒惰的正则表达式运算符在bash中不起作用

echo "$(expr "title: Purple Haze       artist: Jimi Hendrix" : 'title:\s*\(.*\?\)\s*artist.*' )"
Run Code Online (Sandbox Code Playgroud)

版画

Purple Haze             
Run Code Online (Sandbox Code Playgroud)

使用尾随空格,即使我使用的是?懒惰运算符.

我在https://regex101.com/上测试了这个,它按预期工作,bash有什么不同?

regex bash expr

3
推荐指数
1
解决办法
730
查看次数

在 mongodb 聚合中使用 $expr 内部的 $regex

我的文档如下所示

doc = {
    name: 'abc',
    age:20
}
Run Code Online (Sandbox Code Playgroud)

我的查询看起来像

{ $expr: {$and:[{ $gt:[ "$age",  10 ] },
                { $regex:["$name",'ab']}
               ]
          }
} }
Run Code Online (Sandbox Code Playgroud)

但它不起作用并且我收到错误

无法识别的表达式“$regex”

我怎样才能让它发挥作用?

我原来的查询看起来像这样

db.orders.aggregate([{
$match: {}},
{$lookup: {
    from: "orders",
    let: {
        "customer_details": "$customerDetails"
    },
    pipeline: [
        {
            $match: {
                $expr: {
                        $and: [
                                { $or: [
                                                {
                                                $eq: ["$customerDetails.parentMobile","$$customer_details.parentMobile"]
                                                },
                                                {$eq: ["$customerDetails.studentMobile","$$customer_details.parentMobile"]
                                                },
                                                {$eq: ["$customerDetails.studentMobile","$$customer_details.parentMobile"]
                                                },
                                                {$eq: ["$customerDetails.studentMobile","$$customer_details.studentMobile"]
                                                }
                                            ]
                                        },
                                {$eq: ["$customerDetails.zipCode","$$customer_details.zipCode"]},
                                {$eq: ["$customerDetails.address","$$customer_details.address"]}
                        ]
                    }

            }
        }],
    as: "oldOrder"
}
}])
Run Code Online (Sandbox Code Playgroud)

我想用于regex …

regex mongodb mongodb-query aggregation-framework expr

3
推荐指数
2
解决办法
6438
查看次数

使用expr和regex在linux中提取子字符串

所以我刚开始学习正则表达式.我必须在一个大字符串中提取一个子字符串.

我的字符串基本上是一个包含很多东西的大行.我已经确定了我需要提取的模式.我需要这一行中的数字A lot of stuff<li>65,435 views</li>a lot of stuff这个数字只是例如.

整个字符串实际上是一个大行,我的文件views.txt包含很多这样的行.

所以我试过这个,

while read p
do
y=`expr "$p": ".*<li>\(.*\) views "`
echo $y
done < views.txt
Run Code Online (Sandbox Code Playgroud)

我希望迭代这个views.txt文件中的所有这些行并打印出数字.

我收到语法错误.我真的不知道这里出了什么问题.我相信我已经正确地通过两侧的数量<li>views包括的空间.

我对上述正则表达式的(有限的)解释使我相信它会输出数字.

任何帮助表示赞赏.

regex linux substring expr

2
推荐指数
1
解决办法
370
查看次数

是否可以将cron作业或bash脚本设置为从现在开始运行X分钟?

我知道我可以设置一个cron作业,每5分钟运行一次crontab -e,添加一行如下:*/5 * * * * /path/to/script.sh.

是否可以使用date +"%M"例如以分钟为单位获得系统时间,然后将cron作业设置为在date +"%M"加5分钟运行?

我知道我可以date +"%M"通过以下过程获得+5:

$ MIN=`date +"%M"`
$ export MIN
$ expr $MIN + 5
Run Code Online (Sandbox Code Playgroud)

是否可以使用它来设置一个cron作业或脚本以"当前时间分钟"加上"X分钟"运行?

我可以想象这在用户创建新文档的应用程序中很有用,然后在创建文档后X分钟提示保存或标题文档.

linux bash cron expr

2
推荐指数
1
解决办法
661
查看次数

我在 bash shell 中遇到一个简单程序的 expr 语法错误

#!/bin/bash
clear 
echo "Enter a number"
read a 
s = 0
while [ $a -gt 0 ]
do
r = ` expr $a % 10 `
s = ` expr $s + $r `
a = ` expr $a / 10 `
done
echo "sum of digits is = $s"
Run Code Online (Sandbox Code Playgroud)

这是我的代码家伙。我收到一堆 expr 语法错误。我正在使用 bash shell。谢谢!

bash expr

1
推荐指数
1
解决办法
2万
查看次数

Haskell 计算算术表达式并分配变量

我有一个名为 expr 的数据类型,如下所示:

data Expr = C Float | Expr :+ Expr | Expr :- Expr | Expr :* Expr| Expr :/ Expr
Run Code Online (Sandbox Code Playgroud)

我想要做的是扩展 Expr 数据类型以允许变量和“让”表达式

haskell expression ghci expr

1
推荐指数
1
解决办法
120
查看次数