Shell 交替+;总之

Shell 交替+;总之,shell,alternating,Shell,Alternating,我正在寻找一种方法,在一个由加号分隔的整串数字中交替使用+和-。 我需要它是1号-2号+3号-4号等等。 它必须是一个命令行命令(希望o_0有意义),我需要能够将巨额资金注入其中。所以最好是一个sed命令。谢谢大家! 我的命令行到此为止: cat oneven.txt | sed 's/\(\w\)/4\/\1/g' | bc -l | sed 's/^\(.*\)$/\1 +/g' |sed 's/\(\w.*\w\)+\(\w.*\w\)/\1-\2/g'| tr "\n" " " | cu

我正在寻找一种方法,在一个由加号分隔的整串数字中交替使用+和-。 我需要它是1号-2号+3号-4号等等。 它必须是一个命令行命令(希望o_0有意义),我需要能够将巨额资金注入其中。所以最好是一个sed命令。谢谢大家!

我的命令行到此为止:

cat oneven.txt | sed 's/\(\w\)/4\/\1/g' | bc -l | sed 's/^\(.*\)$/\1 +/g' |sed 's/\(\w.*\w\)+\(\w.*\w\)/\1-\2/g'| tr "\n" " " | cut -c -11998
Oneven==>不均匀(它包含(您猜到的)不均匀到1000的所有数字

已尝试:一个sed命令,它将获取一对数字,并将它们之间的+改为min。没有结果。没有添加任何负数 示例(交替之前):

4.00000000000000000000+1.33333333333333333+.800000000000000000+.571428571428571428542857+.444444444444444444+.28571428571428571428+.09523809+.05714285714285+.04081632653061224489+.03174603174603174603+.166666666666666666666666666666+.055555555555555555555555+.0333395238953332+.0185185+1851851851851 + .11764705882352941176 + .03921568627450980392 + .02352941176470588235 + .01680672268907563025 + .01307189542483660130 + .09090909090909090909 + .03030303030303030303 + .01818181818181818181 + .01298701298701298701 + .01010101010101010101 + .07407407407407407407 + .02469135802469135802 + .01481481481481481481 + .01058201058201058201+.00823045267489711934+.062500000000000+.020833333+.012500000000000+[…]

我需要它是1号-2号+3号-4号等等。
它必须是一个命令行命令(希望是有意义的o_0)如果你的输入在一行上,那么你不需要那里的
tr
命令。如果不是,那么
tr
应该在
sed
之前,因为
sed
单独处理每一行,如果两个数字在不同的行上,解决方案就不起作用。

至于解决方案本身,你的想法是让数对之间加一个加号,但你没有为此指定足够好的正则表达式,因此它不起作用。这是我的:

sed -e 's/\([^-+]\+\)+\([^-+]\+\)/\1-\2/g'
上面说:

  • 既不是
    +
    也不是
    -
  • 后跟一个
    +
  • 然后是另一个这样的字符串
您的正则表达式(
\(\w.*\w\)+\(\w.*\w\)
)是错误的,因为它实际上意味着:

  • 零个或多个无约束字符
  • 另一个字字符
  • +
  • 零个或多个无约束字符
  • 另一个字字符
为什么错了?因为你的加号实际上不是由单词字符包围的,而是由空格包围的。所以这实际上与行中的任何内容都不匹配

即使考虑到空格,这仍然与实际数字不匹配,因为其中一些数字以小数点开头,而小数点不是单词字符


即使你解决了这个问题,
*
也会匹配加号,这意味着如果它贪婪,它可能只会取代最后一个加号。

你需要展示你迄今为止所做的尝试,包括一些你遇到困难的代码可能会有所帮助。检查:。现在找出如何应用于你的情况:P@HarshGupta.我想我不被允许这样做使用awk或perl。我是一名大学生,正在做练习,我们还没有(尚未)讨论过awk或perl。但感谢您的建议,如您上面所示,将总和拆分为几行,还是全部在同一行?有任何限制,例如行长或同一行上的数字数?