uutils/sed

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

Open

#398 geöffnet am 30. Apr. 2026

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (23 Forks)github user discovery
good first issue

Repository-Metriken

Stars
 (91 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 9h) (25 gemergte PRs in 30 T)

Beschreibung

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