環(huán)境
RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9
問(wèn)題
假設(shè)有一個(gè)CSV(comma separated value)文件,里面有一些我們需要的信息 ,但是格式卻有問(wèn)題,目前數(shù)據(jù)的列順序是:
姓名,公司名,州名縮寫,郵政 編碼,現(xiàn)在我們希望講這些數(shù)據(jù)重新組 織,以便在我們的某個(gè)軟件中使用,
需要的格式為:姓名,州名縮寫-郵政編碼,公司名,
Linux下Vi替換命令用法練習(xí)
。也就是說(shuō),我們要調(diào)整 列順序,還要合并兩個(gè)列來(lái)構(gòu)成一個(gè)新列。另外, 我們的軟件不能接受逗號(hào)前后 面有任何空格(包括空格和制表符)所
以我們還必須要去掉逗號(hào)前后的所 有空格。
原文件是這樣的:
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
我們希望把它變成這個(gè) 樣子:
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替換命令用法練習(xí)》(http://m.dameics.com)。步驟三:將test.txt用vi打開(kāi) www.bianceng.cn
步驟四:執(zhí)行以下命令(輸入命令時(shí)注 意輸入冒號(hào),退出保存輸入wq,退出不保存使用q或者q!):
1 去掉所有 的問(wèn)號(hào)(?)
%s/?//g
2 去掉逗號(hào)前后的所有空格
%s/[ \t]*,[ \t]*/,/g
3 實(shí)現(xiàn)功能
%s/\([^.]*\),\([^.]*\),\([^.]*\),\([^.]*\)/\1,\3 \4,\2/g
實(shí)現(xiàn)效果