我正在尝试修改一些长度代码。我想用列表2中的单词(成对)替换列表1中所有单词中的单词。
List 1:
Vsap1*(GF/(Kagf+GF))
kdap1*AP1
vsprb
kpc1*pRB*E2F
.
.
List 2:
v1
v2
v3
v4
.
.
换句话说,我希望它在“code.txt”文件中用“v1”(等等)替换“Vsap1 *(GF /(Kagf + GF))”的所有实例。我在文本文件中有List 1(“search_for.txt”)。
到目前为止,我一直在做这样的事情:
set search_for=`cat search_for.txt`
set vv=1
foreach reaction $search_for
sed -i s/$reaction/$vv/g code.txt
set vv=$vv+1
end
此代码存在许多问题。首先,似乎代码不能用括号处理表达式(关于“正则表达式”的东西?)。其次,我不确定我的柜台是否正常工作。第三,我甚至没有整合替换列表 - 我认为用1,2,3替换更容易。理想情况下,我想用v1,v3,v3替换......
任何帮助将不胜感激!!我主要在Matlab工作(很难处理字符串等)所以我在csh上的表现并不是很好。
最佳, 梅迪
答案 0 :(得分:0)
awk应该更好我认为
set search_for=`cat search_for.txt`
set vindex=1
foreach reaction ${search_for}
ReactionEscaped="`printf \"%s\" \"${reaction}\" | sed 's²[\+*./[]²\\\\&²g'`"
sed -i "s/${ReactionEscaped}/v${vindex}/g code.txt
let vindex+=1
end
我没有测试(这里没有系统)所以
ReactionEscaped = “
printf \"%s\" \"${reaction}\" | sed 's²[\+*./[]²\\\\&²g'\
”
当然必须进行微调(由于“\”之间的双重\以及第一个sed模式中的汽车的特殊含义)[有很多关于在网站上逃避特殊字符模式的帖子)