需要使用正则表达式从文件中删除空格
Need to remove whitespace from file using regular expression
我有一个大约半个演出的巨大文件,该文件包含如下所示的记录:
44 ,1577,23GRE ,GREASE THE ENGINE
44 ,1577,23GRE ,GREASE THE ENGINE
44 ,1577,24GRE ,GREASE THE WHEELS
我想删除内容 "GREASE THE ENGINE" 之后逗号和空格之间的空格,并使用 vi 如下所示转换文件:
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","24GRE","GREASE THE WHEELS"
我尝试通过命令删除空格 :1,$s/ //g 这会删除所有空格并呈现如下所示的文件,这违背了目的。我想要带空格的 GREASE THE ENGINE。
44,1577,23GRE,GREASETHEENGINE
44,1577,23GRE,GREASETHEENGINE
44,1577,24GRE,GREASETHEWHEELS
感谢任何或所有帮助。
谢谢
您可以在 vi
中使用此替代命令:
:1,$s/ *,/,/g
:1,$s/ *$//
:1,$s/,/","/g
首先我们替换尾随 space,然后将所有 space 后跟 ,
替换为单个 ,
。最后我们匹配每个不是逗号的字段并用引号引起来。
[[:blank:]]
将匹配 space 或制表符。
对于您的输入,它给出:
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","24GRE","GREASE THE WHEELS"
另一种可能性:
%s/\s\+\([,$]\)/""/g
%s/^/"/g
%s/$/"/g
- 删除逗号或行尾前的任何白色 space 字符序列(白色 space、制表符等);
- 在每行的开头添加
"
- 在每行末尾添加
"
如果您在文件末尾有一个空行,您将以 ""
行结尾,这很容易删除。
我有一个大约半个演出的巨大文件,该文件包含如下所示的记录:
44 ,1577,23GRE ,GREASE THE ENGINE
44 ,1577,23GRE ,GREASE THE ENGINE
44 ,1577,24GRE ,GREASE THE WHEELS
我想删除内容 "GREASE THE ENGINE" 之后逗号和空格之间的空格,并使用 vi 如下所示转换文件:
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","24GRE","GREASE THE WHEELS"
我尝试通过命令删除空格 :1,$s/ //g 这会删除所有空格并呈现如下所示的文件,这违背了目的。我想要带空格的 GREASE THE ENGINE。
44,1577,23GRE,GREASETHEENGINE
44,1577,23GRE,GREASETHEENGINE
44,1577,24GRE,GREASETHEWHEELS
感谢任何或所有帮助。
谢谢
您可以在 vi
中使用此替代命令:
:1,$s/ *,/,/g
:1,$s/ *$//
:1,$s/,/","/g
首先我们替换尾随 space,然后将所有 space 后跟 ,
替换为单个 ,
。最后我们匹配每个不是逗号的字段并用引号引起来。
[[:blank:]]
将匹配 space 或制表符。
对于您的输入,它给出:
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","23GRE","GREASE THE ENGINE"
"44","1577","24GRE","GREASE THE WHEELS"
另一种可能性:
%s/\s\+\([,$]\)/""/g
%s/^/"/g
%s/$/"/g
- 删除逗号或行尾前的任何白色 space 字符序列(白色 space、制表符等);
- 在每行的开头添加
"
- 在每行末尾添加
"
如果您在文件末尾有一个空行,您将以 ""
行结尾,这很容易删除。