uutils/sed

Add `W` command (write first line of pattern space)

Open

#398 opened on Apr 30, 2026

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Rust (23 forks)github user discovery
good first issue

Repository metrics

Stars
 (91 stars)
PR merge metrics
 (Avg merge 6d 9h) (25 merged PRs in 30d)

Description

Bug

The GNU W command — write only the first line of the pattern space (up to the first embedded \n) to a file — is not implemented. It is the partial-write counterpart to w.

Reproduction

$ printf "abc\ndef\n" | /usr/bin/sed -n 'N;W/dev/stdout'
abc

$ printf "abc\ndef\n" | ./target/release/sed -n 'N;W/dev/stdout'
sed: <script argument 1>:1:3: error: invalid command code `W'

What it should do

From the GNU manual:

W FILENAME Write to the given filename the portion of the pattern space up to the first newline.

Same filename-parsing as w. Opens the file once, appends each invocation. Honors --sandbox rejection (already plumbed for w).

Suspected place to add it

src/sed/compiler.rs:1276get_cmd_spec. Add:

'W' => Ok(CommandSpec {
    n_addr: 2,
    handler: compile_write_file_command,   // same parser as 'w'
}),

In the execution path (search for the w case in processor.rs), write only the bytes up to the first \n instead of the whole pattern space.

Affected GNU testsuite tests

missing-filename, sandbox (both also test W rejection paths).

Contributor guide