mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-02 12:20:51 +00:00
join(1): Fix field ordering for -v output
Per POSIX, join(1) (in modes other than -o) is a concatenation of selected character fields. The joined field is first, followed by fields in the order they occurred in the input files. Our join(1) utility previously handled this correctly for lines with a match in the other file. But it failed to order output fields correctly for unmatched lines, printed in -a and -v modes. A simple test case is: $ touch a $ echo "2 1" > b $ join -v2 -2 2 a b 1 2 PR: 217711 Reported by: alt.j2-4o4s2yon at yopmail.com Sponsored by: Dell EMC Isilon
This commit is contained in:
parent
1f7d7cd76a
commit
3452510890
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=320210
@ -467,9 +467,15 @@ outoneline(INPUT *F, LINE *lp)
|
||||
else
|
||||
outfield(lp, 0, 1);
|
||||
}
|
||||
else
|
||||
else {
|
||||
/*
|
||||
* Output the join field, then the remaining fields.
|
||||
*/
|
||||
outfield(lp, F->joinf, 0);
|
||||
for (cnt = 0; cnt < lp->fieldcnt; ++cnt)
|
||||
outfield(lp, cnt, 0);
|
||||
if (F->joinf != cnt)
|
||||
outfield(lp, cnt, 0);
|
||||
}
|
||||
(void)printf("\n");
|
||||
if (ferror(stdout))
|
||||
err(1, "stdout");
|
||||
|
Loading…
Reference in New Issue
Block a user