mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
tac: add support for --regex option to tac
Add support for `tac --regex`, where the line separator is interpreted as a regular expression.
This commit is contained in:
parent
92a1f1422e
commit
664c7a6ec5
4 changed files with 152 additions and 6 deletions
|
@ -1,4 +1,4 @@
|
|||
// spell-checker:ignore axxbxx bxxaxx axxx axxxx xxaxx xxax xxxxa
|
||||
// spell-checker:ignore axxbxx bxxaxx axxx axxxx xxaxx xxax xxxxa axyz zyax zyxa
|
||||
use crate::common::util::*;
|
||||
|
||||
#[test]
|
||||
|
@ -205,3 +205,67 @@ fn test_null_separator() {
|
|||
.succeeds()
|
||||
.stdout_is("b\0a\0");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_regex() {
|
||||
new_ucmd!()
|
||||
.args(&["-r", "-s", "[xyz]+"])
|
||||
.pipe_in("axyz")
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.stdout_is("zyax");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["-r", "-s", ":+"])
|
||||
.pipe_in("a:b::c:::d::::")
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.stdout_is(":::d:::c::b:a:");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["-r", "-s", r"[\+]+[-]+[\+]+"])
|
||||
// line 0 1 2
|
||||
// |--||-----||--------|
|
||||
.pipe_in("a+-+b++--++c+d-e+---+")
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
// line 2 1 0
|
||||
// |--------||-----||--|
|
||||
.stdout_is("c+d-e+---+b++--++a+-+");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_regex_before() {
|
||||
new_ucmd!()
|
||||
.args(&["-b", "-r", "-s", "[xyz]+"])
|
||||
.pipe_in("axyz")
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.stdout_is("zyxa");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["-b", "-r", "-s", ":+"])
|
||||
.pipe_in(":a::b:::c::::d")
|
||||
.succeeds()
|
||||
.stdout_is(":d::::c:::b::a");
|
||||
|
||||
// Because `tac` searches for matches of the regular expression from
|
||||
// right to left, the second to last line is
|
||||
//
|
||||
// +--++b
|
||||
//
|
||||
// not
|
||||
//
|
||||
// ++--++b
|
||||
//
|
||||
new_ucmd!()
|
||||
.args(&["-b", "-r", "-s", r"[\+]+[-]+[\+]+"])
|
||||
// line 0 1 2
|
||||
// |---||----||--------|
|
||||
.pipe_in("+-+a++--++b+---+c+d-e")
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
// line 2 1 0
|
||||
// |--------||----||---|
|
||||
.stdout_is("+---+c+d-e+--++b+-+a+");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue