使用sed获取蛇小写

时间:2016-07-20 10:08:11

标签: sed

如果我有一些像 { "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也很好.. ??

3 个答案:

答案 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
  • 的行