#
문자 자체를 한 줄의 레코드 구분 기호로 사용하도록 awk에게 어떻게 알릴 수 있나요 ? 문제는 줄의 시작이 아닌 파일의 시작과 일치하기 RS="^#$"
때문에 그렇게 말할 수 없고, 줄의 시작 부분에 없는 문자 와 일치하기 때문에 작동하지 않는다는 것입니다.^
RS="#\n"
#
$ data='#
first record, first field
first record, second field
#
second record, first field#
second record, second field
'
그런 다음 다음 명령을 사용하여 각 레코드의 첫 번째 필드를 인쇄합니다 RS="#\n"
.
$ printf "%s" "$data" | awk '
BEGIN { RS="#\n"; FS="\n" }
/./ {print $1}
'
first record, first field
second record, first field
second record, second field
마지막 줄은 첫 번째 필드가 아니고 두 번째 필드이므로 잘못된 것입니다. 예상 출력은 다음과 같습니다.
first record, first field
second record, first field#
답변1
이를 수행하는 한 가지 방법은 다음과 같습니다 awk
.
$ printf "%s\n" "$data" |
awk -F'\n' -v RS='(^|\n)#\n' '/./ {print $1}'
first record, first field
second record, first field#
비결은 레코드 구분 기호를 다음으로 설정하는 것입니다.누구나파일의 시작( ^
) 또는 개행 문자 다음에 #
또 다른 개행 문자 가 옵니다 \n
.