Bash 填充更改项目的填充

Bash 填充更改项目的填充,bash,Bash,我目前正在解析一些网站,以提高我的Unix Bash技能。 已提取一个具有以下格式的文件 la-que-no-podia-capitulo-1 la-que-no-podia-capitulo-25 la-que-no-podia-capitulo-30 我想走到这一步 la-que-no-podia-capitulo-001 la-que-no-podia-capitulo-025 la-que-no-podia-capitulo-030 有人能帮我吗? 我尝试过不同的方法: Bash R

我目前正在解析一些网站,以提高我的Unix Bash技能。 已提取一个具有以下格式的文件

la-que-no-podia-capitulo-1
la-que-no-podia-capitulo-25
la-que-no-podia-capitulo-30
我想走到这一步

la-que-no-podia-capitulo-001
la-que-no-podia-capitulo-025
la-que-no-podia-capitulo-030
有人能帮我吗? 我尝试过不同的方法:

  • Bash RegExp

    x='a-que-no-me-dejas-capitulo-10'
    re='((([[:alpha:]]+(-))+)[[:digit:]]+)'
    if [[ $x =~ $re ]]
    then
        echo The regex matches!
        echo ${BASH_REMATCH[*]}
    fi
    
    (杠杆作用)

    但不幸的是,它没有拆分最后一个数字

  • AWK

    awk -F'-' '{ printf "%04d: \n", $NF }' output_downloads >output_downloads2
    head output_downloads2
    
    0001: 
    0002: 
    0003: 
    0004: 
    0050: 
    
    我无法提取第一部分

  • 带着awk

    awk'{match($0,/(.-)([:digit:]+)$/,m);printf(“%s%03d\n”,m[1],m[2])}输入文件
    
    以下是实际的awk脚本:

    {
      # Regex match whole line with 2 capture groups
      match($0, /(.*-)([[:digit:]]+)$/, m)
    
      # Format print both captured groups
      printf("%s%03d\n", m[1], m[2])
    }
    
    与Bash ERE一起:

    而IFS=read-r | |[[$REPLY]];做
    #正则表达式将整行与2个捕获组匹配
    [[$REPLY=~(.-)([[:digit:]+)$]|
    #格式化打印两个捕获的组
    printf“%s%03d\n”${BASH\u重新匹配[1]}“${BASH\u重新匹配[2]}”
    用awk完成

    awk'{match($0,/(.-)([:digit:]+)$/,m);printf(“%s%03d\n”,m[1],m[2])}输入文件
    
    以下是实际的awk脚本:

    {
      # Regex match whole line with 2 capture groups
      match($0, /(.*-)([[:digit:]]+)$/, m)
    
      # Format print both captured groups
      printf("%s%03d\n", m[1], m[2])
    }
    
    与Bash ERE一起:

    而IFS=read-r | |[[$REPLY]];做
    #正则表达式将整行与2个捕获组匹配
    [[$REPLY=~(.-)([[:digit:]+)$]|
    #格式化打印两个捕获的组
    printf“%s%03d\n”${BASH\u重新匹配[1]}“${BASH\u重新匹配[2]}”
    
    完成
    echo“la-que-no-podia-capitulo-30”| awk'-F-'-v of s=“-”{end=$NF;$NF=“”;printf(“%s%03d\n”,$0,end)}
    非常感谢Shelleter<代码>echo“la-que-no-podia-capitulo-30”| awk'-F-'-v of s=“-”{end=$NF;$NF=“”;printf(“%s%03d\n”,$0,end)}
    非常感谢Shelleter!