给定一个包含与以下内容类似的行的文件。
Mike,mackenna,mike.mackenna,[email protected],yes,no,000
Joe,smith,joe.smith,[email protected],yes,no,123
我想更改文件,以便行显示如下
Mike,Mackenna,mike.mackenna,[email protected],yes,no,000
Joe,Smith,joe.smith,[email protected],yes,no,123
理想情况下,我希望使用替换和正则表达式在 vim 中进行更改,但我也愿意接受其他可能的解决方案。
答案1
这是一个非常简单的 vim 命令:
:%s/,./\U&
办法\U
将以下内容转换为大写,并且&
表示整个匹配的文本(与 相同\0
)
由于我们没有给出/g
标志,因此这只会在第一次匹配时运行。您也可以执行常规命令:
:%norm f,lvU
这就像手动f,lvU
在每一行上打字:f,
找到逗号,l
向右移动,vU
转换为大写。
要使用 bash 命令执行此操作:
vim file.txt -c "%s/,./\U&" -c "wq"
或者
vim file.txt -c "%norm f,lvU" -c "wq"