![在 Linux 命令行界面中将每行第一个逗号后的首字母大写](https://linux22.com/image/1539336/%E5%9C%A8%20Linux%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%95%8C%E9%9D%A2%E4%B8%AD%E5%B0%86%E6%AF%8F%E8%A1%8C%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%80%97%E5%8F%B7%E5%90%8E%E7%9A%84%E9%A6%96%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%86%99.png)
给定一个包含与以下内容类似的行的文件。
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"