텍스트 파일의 행 끝을 확인하려면 어떻게 해야 합니까?
해석되지 않고 인쇄된 파일의 행 끝을 표시하기 위해 bash에서 뭔가를 사용하려고 합니다.파일은 처리를 위해 Linux 머신에 의해 읽혀지는 SSIS/SQL Server로부터의 덤프입니다.
" " " " 내에 스위치가 ?
vi,less,more엔딩이 것 엔드의 ( 「 」 「 」 「 」 「 」 「 」 「 」 「 」 「 」 「 」 。
CRLF★★★★★★★★★★★★★★★★★」LF하면 알 수 떻게하 하면 면? ???
.file유틸리티를 사용하여 행 끝의 유형을 표시할 수 있습니다.
Unix:
$ file testfile1.txt
testfile.txt: ASCII text
"DOS":
$ file testfile2.txt
testfile2.txt: ASCII text, with CRLF line terminators
"DOS"에서 Unix로 변환하려면:
$ dos2unix testfile2.txt
Unix에서 "DOS"로 변환하려면:
$ unix2dos testfile1.txt
이미 변환된 파일을 변환해도 아무런 효과가 없기 때문에 포맷을 먼저 테스트하지 않고 맹목적으로 실행해도 안전합니다.다만, 통상의 면책 사항이 적용됩니다.
Ubuntu 14.04:
cat -e <filename>정상적으로 동작합니다.
엔딩UNIX 회선 엔딩)이됩니다.\n LF로 지정합니다.$엔딩(「Windows」)\r\n CRLF를 'CRLF'로 합니다.^M$.
»vi
:set list행의 엔딩을 확인합니다.
:set nolist다시 정상으로 돌아가기 위해서요
보일 것 \n ★★★★★★★★★★★★★★★★★」\r\nvi어떤 종류의 파일(UNIX, DOS 등)인지 알 수 있기 때문에 어떤 행의 엔딩이 있는지 알 수 있습니다.
:set ff
에서bash 하면 .od -t c <filename> 그냥 '그냥'일 수도 있어요.od -c <filename>를 참조해 주세요.
에서 bash를 합니다.cat -v <filename>Windows の windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows windows 。
(이것은 Windows XP의 Cygwin 경유로 rxvt로 동작했습니다).
: ★★★★★★★★★★★★★★★★★★★★★★」cat -v「」를 시각화하다\rCR) :^M의 끝은 「」, 「」입니다\r\n는 '하다'로 됩니다.^M각 출력 라인의 끝에 있습니다. cat -e추가 시각화가 이루어집니다.\n, 「」, 「」라고 합니다$ ( . )cat -et탭 문자를 다음과 같이 추가로 시각화합니다.^I
★★를 해 보세요.file , , , 「 」file -k , , , 「 」dos2unix -ih
file이치노하지만 어려운 경우에는 시도해 보세요.file -k ★★★★★★★★★★★★★★★★★」dosunix -ih.
상세내용은 다음과 같습니다.
★★를 해 보세요.file -k
트트: : file -k somefile.txt말해줄게.
- 됩니다.
with CRLF line endingsDOS/Windows の dos dos dos dos dos dos dos dos dos dos dos dos 。 - 됩니다.
with CR line endingsMAC mac mac mac mac mac 。 - 출력만 됩니다.
textLinux/Unix "LF" 행의 엔딩에 사용합니다.(따라서 명시적으로 어떤 종류의 언급도 없는 경우)line endings즉, 「LF 회선의 끝」을 의미합니다).
긴 버전은 아래를 참조하십시오.
실제의 예:증명서 부호화
PEM 증명서 파일에 대해 이 파일을 확인해야 할 경우가 있습니다.
file을 사용하다때로는 너무 똑똑하거나 너무 구체적일 수 있습니다.
간단한 퀴즈를 시험해 봅시다.파일이 좀 있어요.그리고 이 파일들 중 하나는 행의 끝이 다릅니다.어느 것이요?
(그런데, 이것은 일반적인 "인증서 작업" 디렉토리 중 하나입니다.)
file:
$ file -- *
0.example.end.cer: PEM certificate
0.example.end.key: PEM RSA private key
1.example.int.cer: PEM certificate
2.example.root.cer: PEM certificate
example.opensslconfig.ini: ASCII text
example.req: PEM certificate request
행의 결말은 알 수 없어요그게 증명서 파일이라는 건 이미 알고 있었어요그걸 말하는데 "파일"이 필요없었어요.
일부 네트워크 어플라이언스는 증명서 파일의 부호화에 대해 매우 까다롭습니다.그게 내가 알아야 하는 이유야.
또 뭐 할 수 있어?
해 보세요.dos2unix--info뭇매를 맞다
$ dos2unix --info -- *
37 0 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
즉, "0.example.end.cer"는 이상한 사람일 것입니다.하지만 어떤 종류의 엔딩이 있을까요?dos2unix 출력 포맷을 암기하고 있습니까? (모릅니다.)
다행인 건 but행행 but but but but 행 but but but 。--keep-going (오류)-k(입니다.file:
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text, with CRLF line terminators\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
DOS(DOS, DOS)가 을 알게 .CRLF에는 UnixUnix)가 ).LF의 엔딩 되어 있지 .이 출력에는 명시되어 있지 않습니다.그냥 그런file님은 '일반' 텍스트파일을 예상하고 있습니다).
(내 니모닉을 공유하려면 "L"은 "Linux"용이고 "LF"용입니다.)
이제 범인을 변환하고 다시 시도하십시오.
$ dos2unix -- 0.example.end.cer
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
좋습니다. 이제 모든 인증서는 Unix 회선 엔딩으로 되어 있습니다.
★★를 해 보세요.dos2unix -ih
위의 예시를 쓸 때는 몰랐지만,
는 dos2unix를 합니다.-ih)--info=h와 경우는 다음과 같습니다.
$ dos2unix -ih -- *
DOS UNIX MAC BOM TXTBIN FILE
0 37 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
그리고 또 다른 "실제" 순간:헤더 포맷은 기억하기 쉽습니다.다음은 두 가지 니모닉입니다.
- DOUM입니다(왼쪽에서 오른쪽으로: DOS의 경우 d, Unix의 경우 u, Mac의 경우 m, BOM의 경우 b).
- 또한 "DUM"은 D, U, M의 알파벳 순서일 뿐입니다.
추가 정보
man fileman dos2unix- 위키백과:줄바꿈
을 CR로 ^M 쓰여서less -u또는 한 번 덜 열리게 입력합니다.
man less라고 말합니다
-u or --underline-special Causes backspaces and carriage returns to be treated as print- able characters; that is, they are sent to the terminal when they appear in the input.
하시면 됩니다.xxd파일의 16진수 덤프를 표시하고 "0d0a" 또는 "0a" 문자를 헌트합니다.
하시면 됩니다.cat -v <filename>@param postman @param postman @param postman @param 。
할 수 .todos filename및 DOS 엔딩으로 합니다.fromdos filenameUNIX 회선 엔딩으로 변환합니다.하려면 Ubuntu를 합니다.sudo apt-get install tofrodos
하시면 됩니다.vim -b filename파일을 바이너리 모드로 편집하려면 , 캐리지 리턴용의 ^M 문자를 표시하고, Windows CRLF 행의 종료를 나타내는 새로운 행이 표시됩니다.란 LF를 합니다.\n'은 'CR'을 합니다.\r. b " " " " " " " " " " UNIX " " " " " " 에 .[unix]행에서는 LF로 .CRLF는 LF로 끝납니다.이 있는 일반 CRLF " " " " -b " " " " " " " vim " , " " , " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "[dos]CRLF를 사용하다의 fileformats설정에 따라 복잡성이 설명됩니다.
또한 메모장++ 답변에 대한 코멘트가 부족하지만 Windows에서 메모장++를 사용하는 경우 보기 / 기호 표시 / 줄 끝 표시 메뉴를 사용하여 CR 및 LF를 표시합니다.이 경우 LF가 표시되고 vim의 경우 LF가 새 행으로 표시됩니다.
출력물을 텍스트 파일로 덤프합니다.그런 다음 메모장 ++에서 열고 Show all characters 버튼을 클릭합니다.우아하지는 않지만 효과가 있다.
- 의 새로운 Vim - Windows로 합니다.^M
의 을 항상 는, 「vim」으로 렌더링 합니다.^M을 에 할 수 .vimrc:
set ffs=unix
그러면 vim은 사용자가 Unix 파일로 여는 모든 파일을 해석합니다.에는 unix "가 있기 \n 문자를 \r\n에) .\n)이가) 있습니다^M이 (vim)을)\r□□□□□□□□★
VIM - Windows 줄바꿈을 표시할 수 있습니다.
「」를 사용할 수 .:e ++ff=unix특정 파일을 편집할 때 사용합니다.
- show type (VIM - 상 vtypetypetype v v v v ( VIM - )unix »dos)
의 맨 에 항상 경우(을 unix로 vim에 할 수 .statusline 함께
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}.
나의 전체 상태 표시줄은 다음과 같습니다. 여기에 돼요..vimrc
" Make statusline stay, otherwise alerts will hide it
set laststatus=2
set statusline=
set statusline+=%#PmenuSel#
set statusline+=%#LineNr#
" This says 'show filename and parent dir'
set statusline+=%{expand('%:p:h:t')}/%t
" This says 'show filename as would be read from the cwd'
" set statusline+=\ %f
set statusline+=%m\
set statusline+=%=
set statusline+=%#CursorColumn#
set statusline+=\ %y
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %p%%
set statusline+=\ %l:%c
set statusline+=\
마치...
.vim/vimrc\ [vim] utf-8[unix] 77% 315:6
파일 맨 아래에
- showfile type (VIM - ((((((((((((((((((((((((((((((( )unix »dos)
있는지 , 을 사용할 수 .:set fileformat(파일 형식을 강제로 설정한 경우에는 작동하지 않습니다).은 반환될 이다.unix 및 unix 의 dosWindows ★★★★★★★★★★★★★★★」
휴대성이 뛰어나고 POSIX도 가능.
위의 예에서 볼 수 있듯이
$ printf "abc\ndef\r\n"
abc
def
sed
$ printf "abc\ndef\r\n" | sed -n l
abc$
def\r$
od
$ printf "abc\ndef\r\n" | od -c ## optional "-t a"
0000000 a b c \n d e f \r \n
0000011
언급URL : https://stackoverflow.com/questions/3569997/how-to-find-out-line-endings-in-a-text-file
'programing' 카테고리의 다른 글
| 경과시간 측정(Swift) (0) | 2023.04.09 |
|---|---|
| 데이터베이스에 보기가 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
| 코코아팟 프레임워크 버전을 확인하는 방법 (0) | 2023.04.09 |
| Windows 개발 머신을 사용하여 iPhone용으로 개발하려면 어떻게 해야 하나요? (0) | 2023.04.09 |
| Bash에서 파일 이름 및 확장자 추출 (0) | 2023.04.09 |