如果我有一些像
{
"name" : "MyNameIsKhan"
"symbol": "my_name_is_khan"
}
我想将其转换为git clone <repoA_url> -- myrepo
cd myrepo
git remote add rb <repoB_url>
git fetch rb <branch_userA_pushed_to>
git branch repob FETCH_HEAD
#assuming you are working on repoA's master
git checkout master
sed -e's /([A-Z])/ _ \ L \ 1 / g'-e's / ^ - //'
然而错过了一些东西,因为它也在改变其他名称字段。 PS-不想更改名称和符号可能有任意数量的空格。如果可能的话,用awk也很好.. ??
答案 0 :(得分:2)
试试这个sed one-liner:
sed '/"symbol"/s/[A-Z]/_\l&/g;s/"_/"/' file
测试:
kent$ cat f
{
"name" : "MyNameIsKhan"
"symbol": "MyNameIsKhan"
}
kent$ sed '/"symbol"/s/[A-Z]/_\l&/g;s/"_/"/' f
{
"name" : "MyNameIsKhan"
"symbol": "my_name_is_khan"
}
答案 1 :(得分:0)
这可能会对您有所帮助:
sed -r 's/([a-z]+)([A-Z][a-z]+)/\1_\l\2/g'
答案 2 :(得分:0)
$ sed -r '/symbol/ {s/([a-z])([A-Z])/\1_\L\2/g; s/: "[A-Z]/\L\0/}' test.txt
{
"name" : "MyNameIsKhan"
"symbol": "my_name_is_khan"
}
/symbol/
将仅搜索并替换包含symbol