파일의 레코드 구분 기호를 변경하는 방법은 무엇입니까? 예를 들어, 레코드 구분 기호를 개행에서 공백으로 변경하여 여러 줄을 하나로 연결합니다. 또 다른 예는 레코드 구분 기호를 공백에서 줄 바꿈으로 변경하여 공백에서 한 줄을 여러 줄로 분할하는 것입니다. 레코드 구분 기호를 제어하는 환경 변수는 무엇입니까? IRS와 ORS?
마찬가지로 파일의 필드 구분 기호를 어떻게 변경합니까? 환경 변수 IFS OFS를 사용할 수 있습니까 cat
?
답변1
레코드 및 필드 구분 기호 동작은 다음에서 찾을 수 있습니다.확증하다, , 등의 프로그램 awk
은 환경 변수를 통해 수행되는 경우가 거의 없습니다. .exe와 같은 cat
일반 유틸리티에는 이러한 기능이 없으며 cut
.
awk
언급된 것 중 가장 유연하며 레코드 구분 기호 및 필드 구분 기호에 대한 변수를 설정할 수 있습니다.
FS
입력 필드 구분 정규식 A;<space>
기본적으로.
OFS
print 문은 필드 구분자를 출력합니다.<space>
기본적으로.
ORS
print 문은 레코드 구분 기호 A를 출력합니다.<newline>
기본적으로.
RS
문자열 값의 첫 번째 문자는RS
입력 레코드 구분 기호여야 합니다.<newline>
기본적으로.RS
두 개 이상의 문자가 포함되면 결과가 지정되지 않습니다 . 비어 있으면RS
레코드는 다음으로 구성된 시퀀스로 구분됩니다.<newline>
하나 이상의 빈 줄(선행 또는 후행 빈 줄)을 추가하면 입력의 시작이나 끝 부분에 빈 레코드가 생성되어서는 안 됩니다.<newline>
값에 관계없이FS
항상 필드 구분 기호여야 합니다.
스크립트에서 이러한 변수를 설정할 수 있습니다. 예를 들어,
awk ' BEGIN { RS=" "; } { print; }' < inputfile
파일의 각 단어를 새 줄에 인쇄합니다. -v
다음 옵션을 사용하여 모든 변수에 할당 할 수도 있습니다 .
awk -v RS=" " '{ print; }' < inputfile
마지막 으로 변수(입력 필드 구분 기호)와 동일한 옵션이 awk
있습니다 .-F
FS
추가 자료:
답변2
tr
문자 교체에만 관심이 있다면 이 유틸리티("번역"을 의미함)를 확인해 보세요 . 예를 들어 줄 바꿈을 공백으로 변환하려면 다음을 사용할 수 있습니다.
tr '\n' ' ' < your_input_file
마찬가지로 공백을 줄 바꿈으로 변환하려면 다음을 사용하십시오.
tr ' ' '\n' < your_input_file
tr
에서 읽으 므로 이 예제에서 했던 것처럼 입력 리디렉션( )을 사용하거나 입력을 여기에 파이프 해야 stdin
합니다 (<
|