Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 查找并替换一个“列表”;字;再加上一份「;字;csh中的成对_Sed_Csh - Fatal编程技术网

Sed 查找并替换一个“列表”;字;再加上一份「;字;csh中的成对

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/

我正在尝试修改一些长度代码。我想用列表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/$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