Sed 查找并替换一个“列表”;字;再加上一份「;字;csh中的成对
我正在尝试修改一些长度代码。我想用列表2中的单词(成对)替换列表1中所有单词中的单词 换句话说,我希望它将“Vsap1*(GF/(Kagf+GF))”的所有实例替换为文件“code.txt”中的“v1”(等等)。我有一个文本文件(“search_for.txt”)中的列表1 到目前为止,我一直在做这样的事情:Sed 查找并替换一个“列表”;字;再加上一份「;字;csh中的成对,sed,csh,Sed,Csh,我正在尝试修改一些长度代码。我想用列表2中的单词(成对)替换列表1中所有单词中的单词 换句话说,我希望它将“Vsap1*(GF/(Kagf+GF))”的所有实例替换为文件“code.txt”中的“v1”(等等)。我有一个文本文件(“search_for.txt”)中的列表1 到目前为止,我一直在做这样的事情: set search_for=`cat search_for.txt` set vv=1 foreach reaction $search_for sed -i s/$reaction/
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中工作(在Matlab中很难处理字符串之类的东西),所以我对csh不是很在行
最好的,
Mehdi我认为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模式中car的特殊含义之间存在双\between关系)[网站上有很多关于逃离特殊字符模式的帖子)您能提供预期的输出吗?
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