我有一个多行的代码子句,并希望将它移植到一行,例如:
int j =7;
int k =17;
int p =17;
myFunc(j,
k,
p);
j++;
将其移至
int j =7;
int k =17;
int p =17;
myFunc(j, k, p);
j++;
我有一个接近我需要的表达式,但结果是
sed -e '/my/,/;\a/{:a; N; s/\n/ /g; ta}' my file
int j =7;
int k =17;
int p =17;
myFunc(j, k, p); j++;
任何想法怎么做?
答案 0 :(得分:1)
如果你想要每行一个语句并且语句由;
分隔,你可以使用这个技巧:删除所有新行并用分隔符+换行符替换分隔符。
使用awk的一个解决方案
tr -d '\n' <code | awk -v RS=";" -v ORS=";\n" '1'
显然,如果您有多行声明,这将无法奏效。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '/^my/{:a;/;$/!{N;ba};s/\n/ /g}' file