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