使用vim格式化

使用vim格式化,vim,vi,Vim,Vi,我有一个包含100行数据的文件,格式如下: Smith, John@email.com, 271Ave Doe, James@email.com, 270Ave . . 等等 我想将所有实体更改为以下格式: {"name": "Smith", "email": "John@email.com", "Address:" "271Ave"} 请建议如何在vim中实现这一点。如果每行都有相同的文本格式,那么使用vim很容易。在vim中打开文件,假设光

我有一个包含100行数据的文件,格式如下:

    Smith, John@email.com, 271Ave 
    Doe, James@email.com, 270Ave  
    .
    .
等等

我想将所有实体更改为以下格式:

     {"name": "Smith", "email": "John@email.com", "Address:" "271Ave"}

请建议如何在vim中实现这一点。

如果每行都有相同的文本格式,那么使用vim很容易。在vim中打开文件,假设光标位于第1行,然后在寄存器q中记录宏:


您将获得所需的输出。您还可以使用嵌套宏,这样您就不必键入200。

如果每一行都有相同的文本格式,那么使用vim进行嵌套操作很容易。在vim中打开文件,假设光标位于第1行,然后在寄存器q中记录宏:


您将获得所需的输出。您也可以使用嵌套宏,这样就不必键入200。

@Kent已经回答了这个问题

如果有人喜欢使用awk,下面是使用awk的方法:

awk -F, 'function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s } function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s } {print "{\"name\": \""$1"\", \"email\": \""ltrim($2)"\", \"Address\": \""rtrim(ltrim($3))"\"}"}' < tmp
易于阅读:

awk -F, '
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
{
print "{\"name\": \""$1"\", \"email\": \""ltrim($2)"\", \"Address\": \""rtrim(ltrim($3))"\"}"
}
' < tmp

复制粘贴命令并用您的文件名替换tmp。

@Kent已经回答了这个问题

如果有人喜欢使用awk,下面是使用awk的方法:

awk -F, 'function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s } function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s } {print "{\"name\": \""$1"\", \"email\": \""ltrim($2)"\", \"Address\": \""rtrim(ltrim($3))"\"}"}' < tmp
易于阅读:

awk -F, '
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
{
print "{\"name\": \""$1"\", \"email\": \""ltrim($2)"\", \"Address\": \""rtrim(ltrim($3))"\"}"
}
' < tmp

复制粘贴命令并用文件名替换tmp。

为什么要使用vim?可能需要sed或awk为什么要使用vim?可能需要sed或awk