합격하려고 해요시인의 유닉스, 그리고 모든 단어/토큰을 포함하는 파일을 생성해 보십시오.성경. 그러나 제안된 대로 tr을 사용하면 여기에는 빈 문자열이 포함됩니다. 아래 예를 참조하세요.
> tr -sc 'A-Za-z' '[\12*]' < bible.txt > bible.words
> sed 5q bible.words
The
Project
Gutenberg
EBook
나는 운 없이 tr에 대한 매뉴얼 페이지를 읽었습니다. 왜 포함되었는지 이해하는 데 도움을 주시면 대단히 감사하겠습니다.
편집하다:
첫 번째 예:
bible.txt의 줄:
1:1 예수 그리스도의 종 바울은 사도로 부르심을 받았습니다.
예상치 못한 결과를 재현하는 명령:
> echo '1:1 Paul, a servant of Jesus Christ, called to be an apostle,' | tr -sc 'A-Za-z' '[\12*]'
Paul
a
servant
of
Jesus
Christ
called
to
be
an
apostle
예상 출력:
Paul
a
servant
of
Jesus
Christ
called
to
be
an
apostle
두 번째 예:
bible.txt의 줄:
프로젝트 구텐베르그 킹제임스 성경 전자책
예상치 못한 결과가 동일한 명령:
echo 'The Project Gutenberg EBook of The King James Bible ' | tr -sc 'A-Za-z' '[\12*]'
The
Project
Gutenberg
EBook
of
The
King
James
Bible
예상 출력:
The
Project
Gutenberg
EBook
of
The
King
James
Bible
내가 이해할 수 없는 빈 줄이 앞에 붙어 있다는 점에 유의하세요.
답변1
tr
무슨 일이 일어나고 있는지 알려면 여기에서 직업 옵션을 이해해야 합니다 .
-c
=> 첫 번째 문자 집합을 보완합니다. 즉, 첫 번째 문자 집합에 없는 모든 문자가 선택됩니다. 귀하의 경우'A-Za-z'
공백, 숫자, 줄 바꿈, 제어 문자와 같은 알파벳이 아닌 문자가 선택된다는 의미입니다.-s
squashed
=> 연속으로 선택된 여러 문자는 하나로 처리 됩니다 .- 두 번째 그룹은 매핑할 문자입니다.
\12
개행 문자의 8진수 ASCII 표현입니다.
즉, 모든 문자(대문자 및 소문자)는 변경되지 않고 그대로 유지되지만 문자가 아닌 문자는 단일 줄 바꿈이 됩니다.
---- -- -------- - - ----- ----
$#%! This is StarWars R2 D2 robot @work.
|---| |---| |------| |---| |---| |-----| |----| ||
\n \n \n \n \n \n \n \n
모든 문자는 변경되지 않고 그대로 유지되지만 일련의 문자가 아닌 문자는 줄 바꿈이 됩니다.
output:
This
is
StarWars
R
D
robot
work