탭으로 구분된 형식의 레코드가 두 줄로 포함된 파일이 있는데 vim 편집기 패턴 일치를 사용하여 탭으로 구분된 값이 있는 레코드를 한 줄로 정렬하고 싶습니다.
전임자.
Abc PQR XYZ NMW
XYX PQR LMW
PLX PXQ LPN PWF
XYQ PLP PMQ LWP
레코드의 첫 번째 행에 레코드의 두 번째 행을 추가하고 싶습니다. 내가 원하는 출력 형식은 다음과 같습니다.
Abc PQR XYZ NMW XYX PQR LMW
PLX PXQ LPN PWF XYQ PLP PMQ LWP
내 문제를 해결하기 위해 다음 명령을 사용해 보았습니다.
:%s/\n(\w\+.*)/\t\1/cgi
이렇게 하면 데이터의 각 줄이 첫 번째 줄을 제외하고 이전 탭 문자로 대체됩니다.
이 문제를 해결하기 위해 vim 패턴 일치 및 교체를 어떻게 사용할 수 있습니까?
답변1
어때요?
:%s/\n\s\+/\t/gc
이렇게 하면 공백이 뒤따르는 개행 문자를 찾아 모두 탭으로 대체하여 행을 결합합니다.
답변2
첫 번째 줄은 항상 문자로 시작하고 두 번째 줄은 항상 탭으로 시작한다는 것을 알고 있다면 가장 쉬운 방법은 아마도 :g
(정규식과 일치하는 모든 줄에서 ex 명령 실행) 및 j!
(공백을 제거하지 않고 결합)을 사용하는 것입니다. ). help :g
그리고 를 보세요 help :j
. 이것을 결합하면 얻을 수 있습니다.
:%g/^\w/j!
답변3
다음을 사용하여 쉽게 수행할 수 있습니다 paste
.
paste -sd'\0\n' file
존재하다 vim
:
:%!paste -sd'\0\n' -