Преобразование строки кода Perl в код BASH

У меня есть эта строка кода Perl (, который я не написал ), что было бы здорово, если бы он был преобразован в код BASH:

perl -pe '$j=0; while ( s{.{$j}\K(\d+):}{/} ) {$j += $1+1}'

Используя это в терминале:

echo "9:Documents6:users111:User1:Jason" | perl -pe '$j=0; while ( s{.{$j}\K(\d+):}{/} ) {$j += $1+1}'

Результаты:

/Documents/users1/User1:Jason

Другой пример:

echo "9:Documents6:users111:User1:Jason
8:Docs for5:user85:User7" | perl -pe '$j=0; while ( s{.{$j}\K(\d+):}{/} ) {$j += $1+1}'
[ 1113] Результат:

/Documents/users1/User1:Jason
/Docs for/user8/User7

Пример имен папок и имени файла, а также числа с двоеточием текстовой строки могут отличаться, код Perl будет работать только с текстовыми строками, которые начинается с числа (любое число) с двоеточия, за которым следует другое число с двоеточием в соответствии с предыдущим , , имейте это в виду, прежде чем пытаться.

Если вы знаете Perl, вы точно знаете, что он делает, что подразумевает то, что должно быть сделано.

Что, если возможно сделать: Преобразовать код Perl в BASH вместе с GNU SED и, возможно, объединить с wc.

Если это возможно только с BASH, то даже лучше.

В худшем случае: ЕСЛИ ( это большое, если! ) невозможно с GNU SED, тогда вместо этого будет использоваться AWK, предполагая, что нет никакого способа сделать это с GNU SED или просто BASH, , имейте в виду, что меня не волнует простота или любой другой тип языка программирования.

Общая идея: enter image description here

1
задан 6 October 2018 в 00:01

0 ответов

Другие вопросы по тегам:

Похожие вопросы: