【问题标题】:Why doesn't this use of sed command work?为什么使用 sed 命令不起作用?
【发布时间】:2012-07-18 19:51:24
【问题描述】:

我有一个 bash 脚本,用于在计算集群上操作文件。

我试图操作的文件格式为:

beadSize=6.25
minBoxSize=2.2
lipids=1200
chargedLipids=60
cations=0
HEAD=0
CHEAD=-2
BODY=2
TAIL=3
ION=-1
RHO_BODY=10
RHO_TAIL=14
tol=1e-10
lb=7.1
FTsize=8
ROUNDS=1000000
ftROUNDS=10
wROUNDS=1000
dt=0.01
alpha=1
transSize=0.15
transSizeZ=0.0
ionsTransSize=2.8
ionsTransSizeZ=2.8
rotateSize=0.18
volSize=8
modSize=0.0
forceFactor=2
kappaCV=0
sysSize=26
zSize=300
iVal=1
split=0
randSeed=580

我在循环中调用一个函数:

for per in $(seq 70 -5 5); do
    for seed in {580..583}; do
        for c in {"fs","fd","bfs","bfd"}; do
            let count=$count+1
            startJob $per $seed $c $count
        done
    done
done

以及我用来操纵的线条:

  let n=$1*12
  echo $n
  cat trm.dat | sed '/memFile*/d' | sed '/rStart*/d' | sed '/test*/d'| sed 's/modSize=[0-9.]*/modSize=0.0/' | sed 's/chachargedLipids=[0-9]*/chargedLipids="$n"/' | grep char #> propFile.dat 

对于$per=15,例如,我期望$n==180。但是,当我运行脚本时,我看到:

180
chargedLipids=120

我做错了什么?

注意 我也试过用:

sed "s/chachargedLipids=[0-9]*/chargedLipids=$n/"

结果相同。

【问题讨论】:

  • 命令行以 ... 注释结尾。您必须引用“#”:... |grep char \#。你真的有一个名为“#”的文件吗?这不应该只是grep -v \# 之类的吗?
  • 我认为你应该去掉这个问题,这有点复杂,而且大部分与 sed 无关

标签: bash replace sed


【解决方案1】:

chacharged != charged,最后的 sed 什么也不做。使用单引号,如果进行替换,您会希望在输出中看到文字文本 chargedLipids="$n"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2018-07-27
    • 2013-09-15
    相关资源
    最近更新 更多