Linux下Vi替换命令用法练习 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

环境

RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9

问题

假设有一个CSV(comma separated value)文件,里面有一些我们需要的信息 ,但是格式却有问题,目前数据的列顺序是:

姓名,公司名,州名缩写,邮政 编码,现在我们希望讲这些数据重新组 织,以便在我们的某个软件中使用,

需要的格式为:姓名,州名缩写-邮政编码,公司名,

Linux下Vi替换命令用法练习

也就是说,我们要调整 列顺序,还要合并两个列来构成一个新列。另外, 我们的软件不能接受逗号前后 面有任何空格(包括空格和制表符)所

以我们还必须要去掉逗号前后的所 有空格。

原文件是这样的:

Bill Jones,? ? ?HI-TEK Corporation ,? CA, 95011

Sharon Lee Smith,? Design Works Incorporated,? CA, 95012

B. Amos? ?,? Hill Street Cafe,? CA, 95013

Alexander Weatherworth,? The Crafts Store,? CA, 95014

我们希望把它变成这个 样子:

Bill Jones,CA 95011,HI-TEK Corporation

Sharon Lee Smith,CA 95012,Design Works Incorporated

B. Amos,CA 95013,Hill Street Cafe

Alexander Weatherworth,CA 95014,The Crafts Store

解决

步骤一:将源文件保存成文本文档,如test.txt

步骤二:将test.txt 上传到Linux中,这里可以使用SSH的文件上传功能,

电脑资料

Linux下Vi替换命令用法练习》(http://meiwen.anslib.com)。

步骤三:将test.txt用vi打开 www.bianceng.cn

步骤四:执行以下命令(输入命令时注 意输入冒号,退出保存输入wq,退出不保存使用q或者q!):

1 去掉所有 的问号(?)

%s/?//g

2 去掉逗号前后的所有空格

%s/[ \t]*,[ \t]*/,/g

3 实现功能

%s/\([^.]*\),\([^.]*\),\([^.]*\),\([^.]*\)/\1,\3 \4,\2/g

实现效果

最新文章