通常使用Sed(或Perl或Ruby)替换文件中的内容:
sed -i.bak 's/\s+\\{/ {/g' some.code
在这个例子中,我想在代码中的花括号之前删除换行符,因为它们不是我的编程'dialect'(对于我使用的任何语言)的一部分,并且使得读取代码不那么自然和流畅。但基本问题是如何匹配跨越线的模式,而不是文件的任何给定行内的模式。
看似相似的现有SO问题并没有具体说明如何跨越一般的行,而是为用户试图解决的特定问题提供解决方案,有时通过变通方法来解决。
我在Sed手册页中探索过,找不到任何切换来做我正在描述的内容。不过,也许我只是没有找到合适的关键词。
答案 0 :(得分:1)
使用sed:
sed -r ':a;N;$!ba;s/\s+\{/ {/g' some.code
答案 1 :(得分:0)
sed -r -unbuffered '$ !{N;s/\n[[:blank:]]*{/ {/;P;D;};$ p' some.code
允许处理大文件(流版本)。在小型和中型(至少数千行)上,@ BMM的代码更有效我想象(1个替换请求,在此代码中,在每个加载的行上替换)