regex - 在源代码中的函数调用中间删除换行符

标签 regex shell sed awk grep

我有一个已格式化的源代码(C 语言),并在函数调用中间添加了换行符。
例如我有

CALL_A( par1, par2, 12345);

我还有其他地方
CALL_A(par1, par2
      ,12345);

我需要找到作为函数的第三个参数传递的数字。
我已经使用这个 sed 命令删除了换行符,但它不匹配:
cat source.c | sed -e ':a; /CALL_A*$/ { N; s/$//; ba; }'

关于如何在函数调用中间删除换行符的任何建议?

最佳答案

请尝试以下操作:

sed -e ':a; /CALL_A[^)]*$/{N; s/\n *//; ba}'

由于以下原因,您当前的版本将无法使用:
  • /CALL_A*$/不会匹配调用,*在正则表达式中重复前一个元素,因此您正在寻找以 CALL_ 结尾的行然后是任意数量的 A .我把它改成了 /CALL_A[^)]*$/以便匹配具有 CALL_A 的行后跟任意数量的不是 ) 的字符,这样您就不会匹配在单行上有调用的任何行。
  • s/$//不会做任何事情,$匹配行尾,但与换行符不匹配,因此替换它不会有任何好处。相反,我使用了 s/\n *// , 这将从下一行删除换行符和任何前导空格。
  • 关于regex - 在源代码中的函数调用中间删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712480/

    相关文章:

    regex - 使用 [regex] 从 URL 列表中获取带扩展名的 grep 文件名

    ruby - YouTube视频ID正则表达式(RegEx)

    java - 将密码正则表达式与相同的字符连续组合

    linux - 解析GETOPTS中带引号的字符串

    linux - 将 CSV 值导入 Bash

    linux - 在 Linux 中从 JSON 响应中提取 ID

    linux - 基于分隔符的合并记录 - Linux

    python - 尝试从正则表达式生成 pandas 数据框列时出现问题?

    Javascript shell ?

    shell:从源代码中提取字符串