4

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

CALL_A( par1, par2, 12345);

我在别的地方

CALL_A(par1, par2
      ,12345);

我需要找到作为函数的第三个参数传递的数字。我已使用此 sed 命令删除换行符,但与它不匹配:

cat source.c | sed -e ':a; /CALL_A*$/ { N; s/$//; ba; }'

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

4

1 回答 1

2

尝试以下操作:

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

您当前的版本将无法使用,原因如下:

  • /CALL_A*$/与调用不匹配,*in 正则表达式重复前一个元素,因此您正在寻找以 . 结尾的行,CALL_然后是任意数量的A. 我将其更改为,/CALL_A[^)]*$/以便它匹配CALL_A后面有任意数量的非字符的)行,这样你就不会匹配在单行上有调用的任何行。
  • s/$//不会做任何事情,$匹配行尾但它不匹配换行符,所以替换它不会有任何好处。相反,我使用s/\n *//了 ,它将从下一行删除换行符和任何前导空格。
于 2013-07-18T00:27:56.513 回答