July 27, 2021: As per IEEE Std 1003.1-2008, -F "str" is now consistent with -v FS="str" when str is null. Thanks to Warner Losh. July 24, 2021: Fix readrec's definition of a record. This fixes an issue with NetBSD's RS regular expression support that can cause an infinite read loop. Thanks to Miguel Pineiro Jr. Fix regular expression RS ^-anchoring. RS ^-anchoring needs to know if it is reading the first record of a file. This change restores a missing line that was overlooked when porting NetBSD's RS regex functionality. Thanks to Miguel Pineiro Jr. Fix size computation in replace_repeat() for special case REPEAT_WITH_Q. Thanks to Todd C. Miller. Also, included the tests from upstream, though they aren't yet connected to the tree. Sponsored by: Netflix
125 lines
2.1 KiB
Plaintext
Executable File
125 lines
2.1 KiB
Plaintext
Executable File
echo T.int-expr: test interval expressions
|
|
|
|
awk=${awk-../a.out}
|
|
|
|
rm -f foo
|
|
|
|
cat << \EOF > prog
|
|
NF == 0 { next }
|
|
$1 == "pat" { pattern = $2; next }
|
|
{
|
|
check = ($1 ~ pattern)
|
|
printf("%s ~ /%s/ -> should be %d, is %d\n", $1, pattern, $2, check)
|
|
}
|
|
EOF
|
|
|
|
cat << \EOF > foo.in
|
|
pat ab{0}c
|
|
ac 1
|
|
abc 0
|
|
|
|
pat a(b{0})c
|
|
ac 1
|
|
abc 0
|
|
|
|
pat ab{0}*c
|
|
ac 1
|
|
abc 0
|
|
|
|
pat a(b{0})*c
|
|
ac 1
|
|
abc 0
|
|
|
|
pat ab{0,}c
|
|
ac 1
|
|
abc 1
|
|
|
|
pat a(b{0,})c
|
|
ac 1
|
|
abc 1
|
|
|
|
pat ab{0,}*c
|
|
ac 1
|
|
abc 1
|
|
|
|
pat a(b{0,})*c
|
|
ac 1
|
|
abc 1
|
|
|
|
pat ab{1}c
|
|
ac 0
|
|
abc 1
|
|
abbc 0
|
|
|
|
pat ab{1,}c
|
|
ac 0
|
|
abc 1
|
|
abbc 1
|
|
abbbc 1
|
|
abbbbc 1
|
|
|
|
pat ab{0,1}c
|
|
ac 1
|
|
abc 1
|
|
abbc 0
|
|
|
|
pat ab{0,3}c
|
|
ac 1
|
|
abc 1
|
|
abbc 1
|
|
abbbc 1
|
|
abbbbc 0
|
|
|
|
pat ab{1,3}c
|
|
ac 0
|
|
abc 1
|
|
abbc 1
|
|
abbbc 1
|
|
abbbbc 0
|
|
EOF
|
|
|
|
cat << \EOF > foo1
|
|
ac ~ /ab{0}c/ -> should be 1, is 1
|
|
abc ~ /ab{0}c/ -> should be 0, is 0
|
|
ac ~ /a(b{0})c/ -> should be 1, is 1
|
|
abc ~ /a(b{0})c/ -> should be 0, is 0
|
|
ac ~ /ab{0}*c/ -> should be 1, is 1
|
|
abc ~ /ab{0}*c/ -> should be 0, is 0
|
|
ac ~ /a(b{0})*c/ -> should be 1, is 1
|
|
abc ~ /a(b{0})*c/ -> should be 0, is 0
|
|
ac ~ /ab{0,}c/ -> should be 1, is 1
|
|
abc ~ /ab{0,}c/ -> should be 1, is 1
|
|
ac ~ /a(b{0,})c/ -> should be 1, is 1
|
|
abc ~ /a(b{0,})c/ -> should be 1, is 1
|
|
ac ~ /ab{0,}*c/ -> should be 1, is 1
|
|
abc ~ /ab{0,}*c/ -> should be 1, is 1
|
|
ac ~ /a(b{0,})*c/ -> should be 1, is 1
|
|
abc ~ /a(b{0,})*c/ -> should be 1, is 1
|
|
ac ~ /ab{1}c/ -> should be 0, is 0
|
|
abc ~ /ab{1}c/ -> should be 1, is 1
|
|
abbc ~ /ab{1}c/ -> should be 0, is 0
|
|
ac ~ /ab{1,}c/ -> should be 0, is 0
|
|
abc ~ /ab{1,}c/ -> should be 1, is 1
|
|
abbc ~ /ab{1,}c/ -> should be 1, is 1
|
|
abbbc ~ /ab{1,}c/ -> should be 1, is 1
|
|
abbbbc ~ /ab{1,}c/ -> should be 1, is 1
|
|
ac ~ /ab{0,1}c/ -> should be 1, is 1
|
|
abc ~ /ab{0,1}c/ -> should be 1, is 1
|
|
abbc ~ /ab{0,1}c/ -> should be 0, is 0
|
|
ac ~ /ab{0,3}c/ -> should be 1, is 1
|
|
abc ~ /ab{0,3}c/ -> should be 1, is 1
|
|
abbc ~ /ab{0,3}c/ -> should be 1, is 1
|
|
abbbc ~ /ab{0,3}c/ -> should be 1, is 1
|
|
abbbbc ~ /ab{0,3}c/ -> should be 0, is 0
|
|
ac ~ /ab{1,3}c/ -> should be 0, is 0
|
|
abc ~ /ab{1,3}c/ -> should be 1, is 1
|
|
abbc ~ /ab{1,3}c/ -> should be 1, is 1
|
|
abbbc ~ /ab{1,3}c/ -> should be 1, is 1
|
|
abbbbc ~ /ab{1,3}c/ -> should be 0, is 0
|
|
EOF
|
|
|
|
|
|
$awk -f prog foo.in > foo2
|
|
diff foo1 foo2 || echo 'BAD: T.int-expr (1)'
|
|
rm -f prog
|