VI を使用して最初のオカレンス/インスタンスを置き換えるのは非常に簡単です。
:%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 形式の理想的な行です。
ただし、2 行目には 4 つの列がありますが、最初の列は IP アドレスのみを受け入れ、それ以上のものは受け入れないため、192.168.2.2/driving/is/fun を削除するか、「,」.csv 区切り文字で区切る必要があります。
viでは、以下を使用できました。
:/^"\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 でうまく機能し、一度に 1 行ずつ必要なものを正確に置き換えます。ただし、データ セットははるかに大きく、次の vi 検索と置換を手動で使用すると時間がかかります。VI / VIMは一度に1行しか実行しないため、スクリプトを作成するか、別の解決策を見つけようとしています.
明らかに、私は次のことを試しました:
次のように、置換の開始部分にファイル全体の % を追加します。
:/^"\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","
すべての行で最初に出現。
どんな助けでも大歓迎です..
ありがとう!