sed在bash脚本中的变量上不起作用;请求文件。简单的例子

时间:2018-11-09 22:05:08

标签: linux bash variables unix sed

如果我在bash脚本中声明了一个变量,然后尝试使用sed对它进行操作,我将不断出错。我试过在变量中使用双引号,反引号并避免使用单引号。这实际上是我的工作。

使用多个参数调用我的脚本

r_i(N) = aN

我的目标是使用sed将$ 3“,”替换为“”,然后使用wc -w计算$ 3中有多少个单词。

MyScript.sh

import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate

def fun(P,t, params):
    beta, mp,b,N,Q = params
    return(beta-mp-(b*N))*P+(a*N)*Q

params = (0.5,0.6,0.7,0.8,0.9)

tvec = np.arange(0,6,0.1)
s1 = scipy.integrate.odeint(
    fun,
    y0 = 1,
    t = tvec,
    args = (params,))

#print(s1)

plt.plot(fun,tvec)

在终端中运行脚本后的结果:

./myScript.sh apples oranges ilike,apples,oranges,bananas

P.s。经过无数次Google搜索,阅读建议并使用我的代码后,我简直无法使这个简单的代码示例正常工作,而且我不确定为什么。而且,直到我经过此代码块,我才能尝试实现wc -w。

4 个答案:

答案 0 :(得分:4)

你可以

Button

答案 1 :(得分:2)

要sed的-i标志需要一个文件参数,如果没有它,则sed命令将执行您期望的操作。

但是,我考虑使用value: dw 14 binary: dw 0 mov ax,0 mov cx,0 mov dx,0 ;CONVERTING 14 TO BINARY CONVERSION: mov ax,[valor] mov cx,2 div cx push dx mov [valor],ax cmp ax,0 jne CONVERSION pop [binary] 代替tr进行此简单替换:

sed

查看大图,您是要计算逗号分隔的字符串,还是将逗号更改为空格后的单词数?例如,您是否要让字符串fruits="$3" checkFruits="$(tr , ' ' <<< $fruits)" echo $checkFruits 返回4或6的计数? (如果您100%确定输入数据中永远不会有空格,那么这个问题就没有什么意义了。)

如果为6,则其他答案(包括我的答案)将已经起作用。

但是,如果您希望答案为4,则可能需要做其他事情,例如:

"i like,apples,oranges,and bananas"

当然可以对此进行一些概括,但是只是提出关于您实际上在做什么的问题。在此处提出问题时,最好将预期的结果以及输入数据和您已经用来解决问题的代码一起发布。

答案 2 :(得分:1)

-i选项用于就地编辑输入文件,这里不需要。

要将命令的输出分配给变量,请使用命令扩展,例如var=$(command)

fruits="$3"
checkFruits=$(sed 's/,/ /g' <<< "$fruits")
echo $checkFruits

答案 3 :(得分:1)

您根本不需要sed

IFS=, read -a things <<< "$3"
echo "${#things[@]}"