【发布时间】:2011-11-10 09:12:49
【问题描述】:
我正在尝试在 unix shell 脚本中使用 AWK 将文件中一种模式的实例替换为另一种模式并将其输出到新文件。
具体来说,如果文件名是 MYFILE.pc,那么我正在寻找带有 'g_MYFILE'(不带引号)的 '*MYFILE' 实例。为此,我在 AWK 中使用了gsub 函数。
我已经成功地写出了输出文件并根据需要替换了所有实例,但是,脚本也用“g_MYFILE”替换了“MYFILE”的实例(即没有星号)
这是脚本:
awk -v MODNAM=${OUTPUT_FILE%.pc} '
{
gsub("\*"MODNAM, "g_" MODNAM);
print
}' ${INPUT_FILE} > ${FULL_OUTPUT_FILENAME}
为了澄清脚本执行以下转换:
- '*MYFILE' --> 'g_MYFILE'
- 'MYFILE' --> 'g_MYFILE'
我只希望执行第一次转换。有人有什么建议吗?
【问题讨论】:
标签: shell unix scripting awk gsub