리눅스 리다이렉션에서 ^H 따위의 문자가 추가로 붙는 것
글쓴이: sangjun11316 / 작성시간: 토, 2019/04/20 - 8:43오전
안녕하세요,
방금 qsub 매뉴얼을 보려는데 줄이 너무 많아 좀 검색하며 보고싶어 리다이렉션을 했더니
$ man qsub > qsub_man.txt
매뉴얼 내용이 깨져서 qsub_man.txt에 들어가더군요 (첨부 '리다이렉션 볼드체' 참조).
조금 보니 man 에서 볼드체 처리된 부분들이 ^H 문자와 함께 두번씩 적혀있더군요.
(ex. 진한 N -> N^HN, 진한 NAME -> N^HNA^HAM^HME^HE)
규칙성이 눈에 보이기 때문에 아래와 같은 방식으로 ^H 와 그에 따라오는 문자 하나만 제거해주면 될 거라 생각하고 아래와 같은 것들을 시도해봤는데, ^H 가 문자열이 아닌 어떤 Tab 문자나 그런애들로 인식이 되는지 (첨부파일과 같이 파란색으로 나타납니다) 문자열 치환으로는 잘 해결이 안되더라고요.
(vi 편집기 안에서)
:%s/^H.//
# ^H와 그 뒤에 따라오는 문자 하나를 없애는걸 생각하고 입력
:%s/(\r)H.//
# 검색해보니 ^ 표시가 Ctrl을 의미하는 애라는 포스팅이 보여 시도
:%s/(\^)H.//
# 혹시 해서 시도
계속해서 'Pattern not found' 가 뜨는거로 보면 ^H 가 vi 안에서 아예 문자열로 인식되지 않는 것 같은데, 이런 경우 어떻게 제대로 고칠 수 있을지 궁금해서 질문드립니다.
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 72.08 KB |
Forums:
거기서 보이는 ^H는 문자열 ^H가 아니라 ascii
거기서 보이는 ^H는 문자열 ^H가 아니라 ascii control code 0x08(BS, Backspace)입니다.
https://www.windmill.co.uk/ascii-control-codes.html
\r을 시도해 보신 걸 보니 아래 링크를 보신 듯하군요.
https://stackoverflow.com/questions/5843495/what-does-m-character-mean-in-vim
근데 그건 ^M = 0x0D = (CR, Carriage return) = /r 이라서 그런 거고요.
이 경우는 ^H 이므로 Ctrl + V -> H 으로 입력해 주면 됩니다.
사족: A^HA가 왜 A인지에 대해서는 재미있는
사족: A^HA가 왜 A인지에 대해서는 재미있는 역사적 배경이 있습니다. 궁금하시면 직접 찾아보세요.
힌트는, 아까 말씀드렸다시피 ^H는 Backspace라는 겁니다.
와! 감사합니다
역시 단순한 문자열이 아니라 어떤 문장부호를 나타내는 친구였군요. 답변해주신 분이 아니셨으면 한참 헤맸겠네요. 주말에 친절한 답변 감사드려요 ㅎㅎ 덕분에 잘 해결했습니다.
관련 역사에 대해서도 흥미로워서 조금 구글링을 해 봤는데, 쉽게 나오지는 않는 것 같네요. 앞으로 공부하다보면 어쨌거나 마주치게 될 친구들 같으니, 천천히 알아가는 거로 하겠습니다 ㅎㅎ
답변 감사합니다!
힌트를 하나 더 드리자면 타자기입니다.
힌트를 하나 더 드리자면 타자기입니다.
(이 정도 가면 거의 정답인데요)
...
man이 좀 무조건 각종 control code를 넣는 경향이 있어서 텍스트 파일로 저장하기 좀 짜증나는데, 그럴 때 이렇게 해주면 좋습니다.
man man | col -b > man.txt
답변 감사합니다
말씀해주신대로 하니 정말 깔끔하게 파일로 저장이되네요. col 이라는 명령어를 쓰는 방법도 있었군요. 좋은 것 가르쳐주셔서 감사합니다 ㅎㅎ
댓글 달기