나는 vi
확신한다. 저는 명령줄에서 작업할 때 이것을 사용하고 싶습니다.
프로세스의 표준 출력을 vi의 헤드리스 버전과 같은 것으로 파이프한 다음 이를 표준 출력으로 파이프하는 쉬운 방법이 있습니까?
이 같은:
$ uname -a | <headless_vi> "3f D"
Linux robbie 4.8.13-1-ARCH
답변1
sed
@JdeBP가 지적했듯이 스트림 편집기를 사용하거나 다음을 사용하는 것이 더 좋습니다 cut
.
$ uname -a | cut -d ' ' -f 1-3
OpenBSD box 6.0
또는 클립을 완전히 삭제한 경우,
$ uname -snr
OpenBSD box 6.0
문제 vi
는 스트림 편집 모드가 없다는 것입니다. 라인 편집기ex
하다"배치 모드"가 있지만 거의 사용되지 않으며 다른 줄 편집기와 마찬가지로 한 줄에서 "커서를 앞뒤로 이동할" 수 없습니다.
sed
ed
스트림에 편집 스크립트를 적용하기 위해 특별히 설계된 라인 편집기의 스트림 편집기 버전입니다 . 이 vi
편집기는 라인 편집기의 화면 편집기 버전 ex
이며 ex
편집기는 입니다 ed
.
명령 vi
시퀀스는 줄의 세 번째(공백)로 이동하고 3f␣
다음 명령은 줄의 나머지 부분을 삭제합니다. 화면 편집 기능이 있으면 편리합니다.␣
D
ed
, sed
및 에서는 ex
행을 추가하거나 삭제하거나 행을 변경할 수 있습니다. 여기서 "행"은 "한 번에 전체 행"을 의미합니다. ed
or 에서 동일한 작업을 수행 하려면 ex
버퍼의 올바른 줄에 있다고 가정하고... 음, 정규식 패턴과 대체 문자열을 만들고 s
이를 편집 명령과 함께 사용하여 Line을 변경해야 한다고 말할 수 있습니다. 이 경우에는 사소한 일이 아닙니다.
의 경우 sed
다음과 같은 형식을 취합니다.
$ uname -a | sed 's/PATTERN/REPLACEMENT/'