【发布时间】:2019-06-10 16:43:36
【问题描述】:
我需要编写一个 shell 脚本,它会在我的 .c 文件中输入一个字符串,然后匹配一个相当复杂的模式。
模式为:)\n{,
\n 和 { 之间没有任何制表符/空格。也就是说,我想与位于文件第一列中的 { 匹配(这是为了仅与 C 中的函数声明之后的 )\n{ 匹配,而不是循环或条件之后的那些)。
void some_function_declaration(char var1, char var2)
{
我已经阅读了手册、论坛,但仍然无法找到正确的方法来编写模式以匹配或找到相应的正则表达式。相应的输出将是:
void some_function_declaration(char var1, char var2)
{ time_exe(__func__, cl(clock()));
rest of the function...
以下是我到目前为止想出的但不起作用。
试试 1
sed -i '' '/)$\n{/a time_exe(__func__, cl(clock()));' >> list_func2.c
试试 2
sed -i '' '/)\n{ /a time_exe(__func__, cl(clock()));' >> list_func2.c
试试 3
sed -i '' '/)/\n{/a time_exe(__func__, cl(clock()));' >> list_func2.c
我很高兴听到您对此事的建议。
【问题讨论】:
-
你不能用一个简单的 sed 正则表达式模式来做到这一点,因为 sed 是面向行的——文件是在换行符上分割的,所以,不做一些 sed 编程,你' 将永远不会在 sed 模式空间中看到换行符。而且,除非您愿意忍受,否则 sed 编程可能会很痛苦。
标签: bash shell sed glob metacharacters