파일의 레코드 또는 필드 구분 기호를 변경하는 방법

파일의 레코드 또는 필드 구분 기호를 변경하는 방법

파일의 레코드 구분 기호를 변경하는 방법은 무엇입니까? 예를 들어, 레코드 구분 기호를 개행에서 공백으로 변경하여 여러 줄을 하나로 연결합니다. 또 다른 예는 레코드 구분 기호를 공백에서 줄 바꿈으로 변경하여 공백에서 한 줄을 여러 줄로 분할하는 것입니다. 레코드 구분 기호를 제어하는 ​​환경 변수는 무엇입니까? 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있습니다 .-FFS

추가 자료:

답변2

tr문자 교체에만 관심이 있다면 이 유틸리티("번역"을 의미함)를 확인해 보세요 . 예를 들어 줄 바꿈을 공백으로 변환하려면 다음을 사용할 수 있습니다.

tr '\n' ' ' < your_input_file

마찬가지로 공백을 줄 바꿈으로 변환하려면 다음을 사용하십시오.

tr ' ' '\n' < your_input_file

tr에서 읽으 므로 이 예제에서 했던 것처럼 입력 리디렉션( )을 사용하거나 입력을 여기에 파이프 해야 stdin합니다 (<|

관련 정보