patsplit 및 gawk로 분할

patsplit 및 gawk로 분할

Gawk 매뉴얼에서 나는 두 가지 기능을 발견 patsplit했고 split.

  • 차이점이 무엇인지 알고 싶습니다.

  • 목적은 이해합니다 split. 그런데 목적이 무엇입니까 patsplit?

감사해요.

답변1

에서는 패턴을 일치시키는 split동안 구분 기호를 제공합니다.patsplit~ 사이분리 기호:

$ echo 'foo,bar' | awk '{n = split($0,a,/,/); for(i=1;i<=n;i++) print a[i]}'
foo
bar

하지만

$ echo 'foo,bar' | awk '{n = patsplit($0,a,/[^,]*/); for(i=1;i<=n;i++) print a[i]}'
foo
bar

답변2

split(또는 지정된 경우 특정 정규식)을 사용하여 기본 필드 분할과 일치합니다 FS. 정규식을 사용하여 일치시킵니다.필드 구분 기호. 를 지정하면 FS=,필드가 쉼표로 구분됩니다. 쉼표 자체는 필드 내용에 표시되지 않고 구분 기호 배열(지정된 경우)에 표시됩니다.

patsplit일치 필드 패턴 분할, 값을 지정하여 기본 필드 분할을 재정의할 수 있습니다 FPAT. 정규식을 사용하여 일치시킵니다.필드 내용. 예를 들어, 레코드에 제공된 숫자에만 관심이 있는 경우 이 정규식을 지정 FPAT="[[:digit:].]+"하거나 사용하여 모든 연속 숫자 그룹을 일치시키고 이를 필드로 작동할 수 있습니다.patsplit

관련 정보