첫 번째 발생/인스턴스를 대체하는 VI 사용은 매우 간단합니다. 여기 내 데이터를 .csv 형식/파일에 설정되어vi/vim/sed 등 모든 행에서 첫 번째 발생
:%s/search/replace/args
하지만, :
"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로 구분해야합니다 구분자. }
/^"\d{,3}.\d{,3 : 다음을 수행
:/^"\d\{,3}\.\d\{,3}\.\d\{,3}\.\d\{,3}\//s/\//","/
:
는 VI에서, 나는 다음과 같은 사용 할 수 있었다 예를 들어, 2 행 : "192.168.2.2/
/"\ d {, 3}. \ d {, 3}/- 첫 번째 IP에서 검색을 시작할 고정 값을 슬래시/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 ","모든 라인에
최초로 출현.
어떤 도움이 크게 감사합니다 ..
감사합니다!
일반적인 프로토 타입 : 패턴을 구분하기 위해 거의 모든 문자를 사용할 수 있습니다. 예를 들어 파이프를 사용하면 슬래시를 벗어날 필요가 없습니다. – qwertyboy