sed匹配传递的变量子集,而不是完全匹配

时间:2015-03-09 18:18:29

标签: linux sed scripting

我部分成功地使用sed替换文本文件中的变量。我被困在一个例外上。

脚本从列表中读取输入 - 比如$roll_symbolC20。 sed取代C20GC20KC20(因为C20匹配字符串的一部分)。

我在网上搜索并尝试了我发现的变化 - 没有成功。 我尝试了这些变化没有成功:

  • 转义保留字符$
  • 逃避大括号
  • 逃避两个
  • 使用双引号而不是单引号。

*目前为止最好的版本(但只是部分版本):

sed -i 's/'${roll_symbol}'/'${roll_symbol}\,${contract_month}'/g'  $OUTPUT_DIRECTORY/$OUTPUT_FILE;

1 个答案:

答案 0 :(得分:2)

你需要告诉sed在比赛开始前哪些字符是合法的,以限制它可以匹配的位置。要仅在字词开头边界匹配,请尝试\<

sed -i "s/\<${roll_symbol}/${roll_symbol},${contract_month}/g"  "$OUTPUT_DIRECTORY/$OUTPUT_FILE";