小编J M*_*J M的帖子

如果使用plus运算符在bash中声明正则表达式

我确信这是一个简单的疏忽,但我没有看到它,而且我不确定为什么这个正则表达式匹配得比它应该更多:

#!/bin/bash
if [[ $1 =~ ([0-9]+,)+[0-9]+ ]]; then
{
  echo "found list of jobs"
}
fi
Run Code Online (Sandbox Code Playgroud)

输入看起来像"02,48,109,309,183".匹配就好了

但是,它也匹配没有最终数字的输入,而是"09,28,34",

最后是否应该[0-9]+指定最终字符至少为1+个数字?

regex bash if-statement

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

匹配一个字符串,该字符串可以在其中的任何位置使用换行符--bash

我有一个包含数字的字符串,表示如下:

\S2=number_goes_here\
Run Code Online (Sandbox Code Playgroud)

这个数字可以是任何东西0.00000.但是,该字符串中的任何地方都可能有换行符,我不完全确定如何匹配它.最终,我只想要这个数字.重要的是,这个字符串位于一大块文本中,可以用这个样本表示(S2可以在最后一行找到):

 1.454187\H,0,0.719618,3.525801,1.633708\H,0,-0.454651,2.80328,2.23844\
 Ru,0,0.025774,1.557599,-0.253913\\Version=EM64L-G09RevD.01\State=6-A\H
 F=-1238.5377983\S2=8.75446\S2-1=0.\S2A=8.750006\RMSD=2.314e-09\Dipole=
Run Code Online (Sandbox Code Playgroud)

我打开bash,sed,awk,gawk; 无论你有什么想法来解决这个问题.

编辑:

这是一个例子,下面的第一个答案对于这个例子似乎没有正常工作.它只打印"2".

 .631441,-2.132979\H,0,0.20151,-1.464802,-2.95553\H,0,0.377883,-2.50668
 5,-1.874761\\Version=EM64L-G09RevD.01\State=3-A\HF=-1265.9035096\S2=2.
 053325\S2-1=0.\S2A=2.000966\RMSD=1.590e-04\Dipole=0.7197616,-2.1253769
Run Code Online (Sandbox Code Playgroud)

regex bash awk sed

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

标签 统计

bash ×2

regex ×2

awk ×1

if-statement ×1

sed ×1