变化中的Majuscule和小案例

时间:2018-09-26 11:21:09

标签: awk sed

我有一个文件包含这样的行,像这样:大写一个单词,小写另一个单词:

"BAMBARA"{ "bambara" }

作为输出,我想要:

case(BAMBARA) { template("bambara") }.

到目前为止,我有sed/"$"/case($)/ 但这根本不起作用。我该如何指定大写和小写字母?

4 个答案:

答案 0 :(得分:2)

尝试:

sed 's/"\([^"]*\)"{ \("[^"]*"\) }/case(\1) { template(\2) }./'

答案 1 :(得分:2)

使用"作为字段分隔符的awk命令(有点脏):

awk -F"\"" '{print "case("$2") { template(\""$4"\") }."}' inputFile

答案 2 :(得分:2)

一个简单的应该是

sed 's/\([a-z]\+\)/template(\1)/;s/"\([A-Z]\+\)"/case(\1) /'

请注意顺序很重要。如果您将其反转,则会将case一词与小写字母完全匹配。

答案 3 :(得分:-1)

$ sed 's/"\([^"]*\)"\(.*\)\("[^"]*"\)/case(\1) \2template(\3)/' file
case(BAMBARA) { template("bambara") }