在每个文件中重新排列名称空间声明

时间:2019-01-07 16:58:00

标签: regex awk sed

我正在寻找一种重新排列与模式匹配的文本字符串以及所有内容都小写的方法。

例如,在我的代码库中,我有“ app \ Services \ PropertyTax”。我想用“ Acme \ modules \ propertytax \ services”代替。

“ app”之后将永远只有两个级别,并且新格式化的字符串的顺序将始终交换和小写。

app \ Entities \ HumanResources => Acme \ modules \ humanresources \ entities

寻找一种在特定目录中每个文件中执行此操作的方法。

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试awk

find . -exec gawk -i inplace -v INPLACE_SUFFIX=.bak -F\\ '/app\\.*\\.*/ {print "Acme\\modules\\"tolower($3)"\\"tolower($2)}' {} \;


这将替换文件,并以.bak文件名后缀存储原始文件的备份。

如果要删除备份文件

find . -regex ".*bak" -type f -exec rm -f {} \;