Liste des Groupes | Revenir à cl awk |
On 3/14/2024 1:19 AM, Aharon Robbins wrote:I couldn't find any existing tickets so I just created tickets with the Austin Group to request that definitions for the 3 cases I listed above be added to the POSIX spec:In article <87y1am5cfo.fsf@nosuchdomain.example.com>,It doesn't say what happens when you do NF += 2 either. All I'm saying is that changing the value of NF is undefined behavior per POSIX.
Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:Do you see something in POSIX that defines the behavior of assigning to>
NF?
In the section "Variables and Special Values"
>
| References to nonexistent fields (that is, fields after $NF), shall
| evaluate to the uninitialized value. Such references shall not create
| new fields. However, assigning to a nonexistent field (for example,
| $(NF+2)=5) shall increase the value of NF; create any intervening fields
| with the uninitialized value; and cause the value of $0 to be
| recomputed, with the fields being separated by the value of OFS. Each
| field variable shall have a string value or an uninitialized value when
| created.
>
It doesn't say what happens when you do NF -= 2; nonetheless, all
traditional awks throw away fields when you do something like that.
I'm not sure which awks would be considered "traditional" vs otherwise but AFAIK POSIX is descriptive, i.e. describes how X behaves rather than dictates the behavior of X, so if the appropriate set of awk variants all behave the same way for any behavior such as this that's currently undefined by POSIX (changing the value of NF, the value of $0 in the end section, and field splitting with a null FS being the 3 most commonly used cases IMO) then maybe the folks who write that spec could/should update it to describe that behavior but I don't know which awks all behave the same way for those cases, nor if that's enough of them for POSIX to make a definition.
Ed.
Les messages affichés proviennent d'usenet.