SimpleTest ScriptableBrowser может использоваться независимо от среды тестирования. Я использовал его для многочисленных заданий автоматизации.
This is a simple syntax, and every awk (nawk, mawk, gawk, etc) can use this.
{
while (match($0, /Hello! [0-9]+/)) {
pattern = substr($0, RSTART, RLENGTH);
sub(/Hello! /, "", pattern);
print pattern;
$0 = substr($0, RSTART + RLENGTH);
}
}
Это синтаксис gawk
. Это также работает для шаблонов, когда нет фиксированного текста, который мог бы работать как разделитель записей и не совпадал с переводом строки:
{
pattern = "([a-g]+|[h-z]+)"
while (match($0, pattern, arr))
{
val = arr[1]
print val
sub(pattern, "")
}
}
GNU awk
awk 'BEGIN{ RS="Hello! ";}
{
gsub(/[^0-9].*/,"",$1)
if ($1 != ""){
print $1
}
}' file
Не существует функции gawk, которая бы соответствовала одному и тому же шаблону несколько раз в строке. Если вы точно не знаете, сколько раз шаблон повторяется.
Имея это, вы должны выполнять итерацию «вручную» для всех совпадений в одной строке. Для вашего примера ввода это будет:
{
from = 0
pos = match( $0, /Hello! ([0-9]+)/, val )
while( 0 < pos )
{
print val[1]
from += pos + val[0, "length"]
pos = match( substr( $0, from ), /Hello! ([0-9]+)/, val )
}
}
Если шаблон должен совпадать при переводе строки, вам необходимо изменить разделитель входных записей - RS