我有以下一串 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}'
其结果是:
/Documents/users1/User1:Jason
/Docs for/user8/User7
文件夹名称和文件名加上文本字符串中带冒号的数字的示例可能有所不同,Perl 代码仅适用于以带冒号的数字(任意数字)开头,后跟另一个带冒号的数字的文本字符串根据前一个,尝试之前请记住这一点。
如果您了解 Perl,那么您就会确切地知道它的作用,这意味着必须做什么。
如果可以的话该怎么办:将 Perl 代码转换为重击以及GNU SED或许还与 wc 结合。
如果仅使用 BASH 就可能更好。
最糟糕的情况是:如果 (这是一个很大的如果!)无法通过 GNU SED 实现,那么将使用 AWK 代替,因为假设无法通过 GNU SED 或 BASH 实现,请记住,我不在乎简单性或任何其他类型的编程语言。