使用VI替換第一次出現/實例非常簡單。每行第一次出現vi/vim/sed等
:%s/search/replace/args
但是,這裏以.csv格式/文件中設置我的數據:
"192.168.2.1","www.google.com","2009/01/11_10:00"," What a great website"
"192.168.2.2/driving/is/fun","-","2009/03/22_00:00","Driving website"
"192.168.2.4/boating/is/crazy","-","2009/03/22_00:00","Boating Website"
"192.168.2.5","www.cars.com","2009/04/27_00:00","What a good car website"
所以,你會在第一行注意到,有4列,這是理想的線爲.csv格式。
但是,在第二行中,有4列,但第一列只接受IP地址,只有192.168.2.2/driving/is/fun必須被刪除或與「,」.csv分開delimter。
在六,我可以使用以下命令:
:/^"\d\{,3}\.\d\{,3}\.\d\{,3}\.\d\{,3}\//s/\//","/
其執行以下操作:
/^"\d{,3}.\d{,3} 。\ d {,3}。\ d {,3}/- 設置一個錨點以在第一個IP上以正斜槓/開始搜索。例如,第2行:「192.168.2.2/
/s ///「,」/ - 替換IP地址末尾的/並用.csv分隔符替換它「, 「
這在VI/VIM中很好用,一次代替我需要的一行。但是,數據集要大得多,並且手動使用以下的vi搜索和替換非常耗時。我正在尋找它的腳本或找到一個替代解決方案,因爲VI/VIM將一次只做一行,如下所示:s/search/replace/g另外替換每行/更改日期列。
很顯然,我已經試過如下:
添加%整個文件內部置換開始的像這樣:
:/^"\d\{,3}\.\d\{,3}\.\d\{,3}\.\d\{,3}\//%s/\//","/
其中突出的每個條目我需要修改,但出錯:
E492: Not an editor command: /^"\d\{,3}\.\d\{,3}\.\d\{,3}\.\d\{,3}\//%s/\//
這很讓人困惑。
我最終想用sed/perl腳本編輯整個文件。
所以..
「192.168.2.2/ - > 」192.168.2.2「,」 在每一行
第一次出現。
任何幫助將不勝感激..
謝謝!
只是一個普通的protip:你可以使用幾乎任何字符來分隔你的模式。例如,如果您使用管道,則不必跳過斜槓。 – qwertyboy