2012-07-18 140 views
2

我有一個bash腳本,用於處理計算羣集上的文件。爲什麼不使用sed命令?

我試圖操縱的文件格式:

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/" 

具有相同的結果。

+1

命令行以...評論結尾。你必須引用「#」:'... | grep char \#'。你真的有一個名爲'#'的文件嗎?這不應該只是'grep -v \#'什麼的? – fork0 2012-07-18 11:47:43

+0

我認爲你應該刪除這個問題,這有點複雜,其中大部分與sed無關 – perreal 2012-07-18 11:51:11

回答

3

chacharged!= charged,最後的sed什麼都不做。使用單引號,如果正在進行替換,則希望在輸出中看到文字chargedLipids="$n"