命令行递归代码清理,'){'to'){',使用grep / sed

时间:2014-01-16 18:00:38

标签: regex sed grep

我正在尝试清理我的代码并使其保持一致,通过全局添加空格和{。例如:

function (args){ -> function (args) {
while(1){ -> while(1) {
foreach($a in $b){ -> foreach($a in $b) {

我正在尝试通过命令行放置一些将通过文件夹并将此规则递归应用于所有文件的内容,通过搜索“){”并替换为“){”,使用sed的某些组合并找到/ grep。

这样做的正确方法是什么?由于sed,find / grep或shell,我不确定需要转义什么。

如果重要,shell是Bash,代码是偶尔会生成javascript的php。我做了一个快速的grep,看看会出现什么,并且它看起来很好做这个一般的搜索/替换,但是如果有人看到潜在的麻烦我喜欢指针。 :)

谢谢! :)

编辑添加:使用除grep / sed / find之外的常见linux程序的解决方案绝对非常受欢迎,这正是我的开始。谢谢! :)

2 个答案:

答案 0 :(得分:3)

你可以尝试这个sed:

sed -i.bak 's/){/) {/g' file

要使其递归使用find:

find -type f -exec sed -i.bak 's/){/) {/g' '{}' +

答案 1 :(得分:0)

你可以这样做:

find . -type f -print |
while IFS= read -r file
do
    beautify "$file" > /usr/tmp/tmp$$ &&
    mv /usr/tmp/tmp$$ "$file"
done

只需将“美化”替换为您要调用的任何工具即可清理代码。谷歌“PHP代码美化”找到一个或使用一些sed命令,如果你对此感到满意,例如:

find . -type f -print |
while IFS= read -r file
do
    sed 's/){/) {/g' "$file" > /usr/tmp/tmp$$ &&
    mv /usr/tmp/tmp$$ "$file"
done

如果找不到可以从UNIX调用的PHP美化器,那么像“cb”或“indent”这样的C语言可能会起作用。

请注意,如果您的文件名包含换行符,则上述操作无效。如果这是一个问题,那就有解决方法。