다음 중 텍스트 파일 userlist.txt의 모든 CR-LF 줄 바꿈을 Linux 표준 LF 줄 바꿈으로 변경하고 결과를 newlist.txt에 저장하는 명령은 무엇입니까?
정답: A
설명
정답은 A, tr -d '\r' < userlist.txt > newlist.txt 입니다. 이 명령은 tr 유틸리티를 사용하여 userlist.txt 파일에서 캐리지 리턴 문자(\r)를 삭제하고 출력을 newlist.txt 파일로 리디렉션합니다. tr 유틸리티는 표준 입력에서 문자를 번역, 삭제 또는 압축하고 결과를 표준 출력에 쓰는 데 사용됩니다. tr 명령의 구문은 다음과 같습니다.
tr [옵션] set1 [set2]
옵션은 문자 세트 보완, 압축 또는 자르기와 같은 tr 명령의 동작을 수정할 수 있습니다. set1 및 set2는 수행할 변환을 지정하는 문자열입니다. set1의 문자는 set2의 해당 문자로 대체됩니다. set2를 생략하면 set1의 문자가 삭제됩니다.
-d 옵션은 tr에게 출력에서 set1의 문자를 삭제하도록 지시합니다. \r 문자는 Windows 시스템에서 줄 바꿈 문자(\n)와 함께 줄 끝을 표시하는 데 사용되는 캐리지 리턴 문자를 나타내는 특수 이스케이프 시퀀스입니다. < 및 > 기호는 명령의 입력 및 출력을 파일이나 장치로 리디렉션하는 리디렉션 연산자입니다. < 기호는 명령의 표준 입력을 파일에서 리디렉션하는 반면, > 기호는 명령의 표준 출력을 파일로 리디렉션하여 기존 내용을 덮어씁니다.
따라서 tr -d '\r' < userlist.txt > newlist.txt 명령은 userlist.txt 파일에서 각 문자를 읽고 캐리지 리턴 문자를 삭제한 후 출력을 newlist.txt 파일에 기록합니다. 이렇게 하면 userlist.txt 파일의 모든 CR-LF 줄 바꿈(\r\n)이 Linux 표준 LF 줄 바꿈(\n)으로 효과적으로 변경되고 결과가 newlist.txt에 저장됩니다.
다른 명령은 다음과 같은 이유로 올바르지 않습니다.
* B, tr -c '\n\r' '' <newlist.txt> userlist.txt: 이 명령은 여러 오류가 있기 때문에 예상대로 작동하지 않습니다. 첫째, -c 옵션은 tr에게 set1의 문자 집합을 보완하도록 지시합니다. 이는 작업이 set1에 없는 문자에 적용된다는 의미입니다. 그러나 이 명령의 set1은
줄 바꿈 문자와 캐리지 리턴 문자를 모두 포함하는 '\n\r'이므로 이 두 문자를 제외한 다른 모든 문자가 보완됩니다. 둘째, 이 명령의 set2는 빈 문자열('')입니다. 이는 tr이 set1(또는 이 경우 보수)과 일치하는 문자를 삭제함을 의미합니다. 셋째, 리디렉션 연산자가 반대입니다. 즉, tr은 반대 방향이 아닌 newlist.txt 파일에서 입력을 읽고 출력을 userlist.txt 파일에 씁니다. 따라서 tr -c 명령은
'\n\r' '' <newlist.txt> userlist.txt는 newlist.txt 파일에서 줄 바꿈 및 캐리지 리턴 문자를 제외한 모든 문자를 삭제하고 userlist.txt 파일을 출력으로 덮어씁니다. 일련의 빈 줄.
* C, tr '\r\n' '' <userlist.txt> newlist.txt: 이 명령은 여러 오류가 있기 때문에 예상대로 작동하지 않습니다. 첫째, 이 명령의 set1은 '\r\n'입니다. 이는 tr이 캐리지 리턴 및 줄 바꿈 문자를 쌍이 아닌 개별적으로 일치한다는 것을 의미합니다. 둘째, 이 명령의 set2는 빈 문자열('')입니다. 이는 tr이 set1과 일치하는 문자를 삭제한다는 의미입니다. 셋째, 리디렉션 연산자가 없습니다. 즉, tr은 userlist.txt 파일에서 입력을 읽거나 출력을 newlist.txt 파일에 쓰지 않지만 대신 표준 입력의 입력을 기대하고 출력을 userlist.txt 파일에 씁니다. 표준 출력. 따라서 tr '\r\n' '' <userlist.txt> newlist.txt 명령은 표준 입력에서 모든 캐리지 리턴과 줄 바꿈 문자를 삭제하고 출력을 표준 출력에 쓰고 userlist를 처리합니다. txt 및 newlist.txt를 오류를 발생시키는 추가 인수로 사용합니다.
* D, tr '\r' '\n' userlist.txt newlist.txt: 이 명령은 여러 오류가 있기 때문에 예상대로 작동하지 않습니다. 먼저, 이 명령의 set1과 set2는 '\r'과 '\n'입니다. 이는 tr이 캐리지 리턴 문자를 줄 바꿈 문자로 바꾸는 것이지 삭제하는 것이 아니라는 것을 의미합니다. 둘째, 리디렉션 연산자가 없습니다. 즉, tr은 userlist.txt 파일에서 입력을 읽거나 출력을 newlist.txt 파일에 쓰지 않지만 대신 표준 입력의 입력을 기대하고 출력을 userlist.txt 파일에 씁니다. 표준 출력. 셋째, userlist.txt와 newlist.txt는 오류를 발생시키는 추가 인수로 처리됩니다. 따라서 tr '\r' '\n' userlist.txt newlist.txt 명령은 모든 캐리지 리턴 문자를 표준 입력의 줄 바꿈 문자로 바꾸고 출력을 표준 출력에 쓰고 오류를 보고합니다. 추가 인수.
* E, tr -s '/M/J/' userlist.txt newlist.txt: 이 명령은 여러 오류가 있기 때문에 예상대로 작동하지 않습니다. 첫째, -s 옵션은 tr에게 set1에서 반복되는 문자를 삭제하지 않고 한 번만 삭제하도록 지시합니다. 둘째, 이 명령의 set1은 '/M/J/'입니다. 이는 캐리지 리턴 및 줄 바꿈 문자에 대한 유효한 이스케이프 시퀀스가 아닙니다. 올바른 이스케이프 시퀀스는 각각 '\r' 및 '\n'입니다.
셋째, 리디렉션 연산자가 없습니다. 즉, tr은 userlist.txt 파일에서 입력을 읽거나 출력을 newlist.txt 파일에 쓰지 않고 대신
* 표준 입력 및 출력을 표준 출력에 씁니다. 넷째, userlist.txt와 newlist.txt는 오류를 발생시키는 추가 인수로 처리됩니다. 따라서 tr -s '/M/J/' userlist.txt newlist.txt 명령은 표준 입력에서 반복되는 문자 /, ^, M 및 J를 압축하고 출력을 표준 출력에 기록합니다. 추가 인수에 대한 오류를 보고합니다.
참고자료:
* 예제가 포함된 Linux의 Tr 명령 | 리눅스화하다
* 예제가 포함된 Unix/Linux의 tr 명령 - GeeksforGeeks
* Linux tr 명령 사용 방법 - How-To Geek
* [tr(1) - Linux 매뉴얼 페이지 - man7.org]
* [Linux tr 명령 도움말 및 예제 - Computer Hope].