下面的代码工作:AWK gensub正则表达式反斜杠0和反斜杠1不灵
// {
print gensub("[a-z][A-Z]”,"&","g")
}
但这并不:
// {
print gensub("[a-z][A-Z]","\0","g")
}
而且也不该是最后我想要达到的目标:
// {
print gensub(“([a-z])([A-Z])",”\1 \2","g")
}
为什么这不起作用,我该如何使这项工作。这个剧本的目的:名字是用不用空格分隔的姓氏给出的,我需要把它们分开。名字的第一个字母是大写字母,我不想在第一个名字之前留出空格。我可以将FS
设置为''
并检查每个字符,但我想学习gensub。我也没有找到gsub的用法,因为它给我的是匹配的数量,而不是替换后的字符串。
另一种可能的解决方案,但我不知道如何使这项工作是将gensub中的目标从"g"
设置为"2,3,4"
等等,但我无法在这里提供一个以上的参数。
请不要建议替代解决方案只是如何使上述工作的一个
如何更改智能报价和真实报价?你是如何认识诸如\\而不是\?的东西的? –
idk人们如何创造“聪明的引号”(我从你的问题复制/粘贴),但我认为这是有关使用一些编辑器(可能是Windows的?),所以也许找到一个不同的编辑器(我使用' vi')?同样,我也了解其他一切 - 阅读文档和经验。 FWIW我强烈推荐Arnold Robbins编写的Effective Awk Programming第4版 - 如果你有任何其他的awk书,那么就把它扔掉。 –
也是关于向gensub提供超过1个目标的问题。你能解决这个问题吗?我不知道你在说什么要摆脱//?我的代码在没有它们的情况下工 –