Gawk分割履歴がGNU拡張が有効になっている場合と互換モードで同じ方法で記録されるのはなぜですか?

Gawk分割履歴がGNU拡張が有効になっている場合と互換モードで同じ方法で記録されるのはなぜですか?

gawkGawkでバグを見つけたのか、それともページの内容を誤って読んだのか、見逃したのかはわかりませんman

gawkページによると、man互換モードでは、RS複数の文字が含まれている場合、最初の文字のみが入力レコード区切り文字と見なされます。

記録
通常、レコードは改行で区切られます。組み込み変数に値を割り当てることで、レコードの分離方法を制御できます。 RS。もしRSレコードを区切る単一文字です。そうでなければ、RS正規表現です。この正規表現に一致する入力のテキストで区切られたレコード。ただし、互換モードでは、文字列値の最初の文字のみを使用してレコードを区切ります。もしRS空の文字列に設定すると、レコードは空行で区切られます。いつRS空の文字列に設定すると、改行は常に値に加えてフィールド区切り文字として機能します。FSがあるかもしれません。

そのため、実行時にgawk -P -- '1' RS="bar" <<<'foobarfoo'次の結果が出ることが予想されます(すべてのページ-Pに互換モードがオンになっています)。gawkman

foo
arfoo

ただし、実行すると次のようになります。

% gawk -P -- '1' RS="bar" <<<'foobarfoo' 
foo
foo

互換モードが明示的にオンになっても同じことが起こります。

% gawk -c '1' RS="bar" <<<'foobarfoo'
foo
foo

明らかに互換モードでは、Gawkは実際にGNU拡張が有効になったときと同じ方法でレコードを分割します。私は何を見逃していますか?

これはLinux(Ubuntu 16.04 64ビット、Gawkバージョン:)にありますGNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)

ベストアンサー1

文書は非常に明確であるため、バグレポートを送信してください。

BWK(本当の奇妙なまたは元のawk)、文書で提案されているように動作します。 gawk開発者がこの詳細に関する他の参照実装を持っている場合は、それを文書化する必要があります。

愚かなテスト-c(互換モード)、これはRS質問で説明されているように、つまり文書とは異なる方法で処理されます。

おすすめ記事