Advertisement
arkanon

Split Package Name

May 3rd, 2022
1,247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.02 KB | None | 0 0
  1. cat << EOT > pacotes
  2. python-4.3.5-1-x86_64.chi.zst
  3. python-zope-4.3.5-1-x86_64.chi.zst
  4. python-zope-proxy-4.3.5-1-x86_64.chi.zst
  5. xorg-server-xvfb-21.1.3-6-x86_64.chi.zst
  6. xorg-fonts-100dpi-1.0.3-7-any.chi.zst
  7. EOT
  8.  
  9.  
  10.  
  11. split1()
  12. {
  13.         file=$1
  14.           RE='(.+)-(([^-]+)-([0-9]+))-([^.]+)\.chi\.zst'
  15.   folder_dir=$(echo ${file%/*})
  16.     fullname=$(echo ${file##*/})
  17.   [[ $fullname == $folder_dir ]] && folder_dir=localhost
  18.   [[ $fullname =~ $RE ]] &&
  19.   {
  20.         fullname=${BASH_REMATCH[0]}
  21.             base=${BASH_REMATCH[1]}
  22.    version_build=${BASH_REMATCH[2]}
  23.          version=${BASH_REMATCH[3]}
  24.            build=${BASH_REMATCH[4]}
  25.             arch=${BASH_REMATCH[5]}
  26.     base_version=$base-$version_build
  27.     echo $folder_dir $fullname $arch $base $base_version $version-$build $build
  28.   }
  29. }
  30.  
  31.  
  32.  
  33. split2()
  34. {
  35.         file=$1
  36.           RE='(.+)-(([^-]+)-([0-9]+))-([^.]+)\.chi\.zst'
  37.   folder_dir=${file%/*}
  38.     fullname=${file##*/}
  39.   [[ $fullname == $folder_dir ]] && folder_dir=localhost
  40.   [[ $fullname =~ $RE ]] &&
  41.   {
  42.         fullname=${BASH_REMATCH[0]}
  43.             base=${BASH_REMATCH[1]}
  44.    version_build=${BASH_REMATCH[2]}
  45.          version=${BASH_REMATCH[3]}
  46.            build=${BASH_REMATCH[4]}
  47.             arch=${BASH_REMATCH[5]}
  48.     base_version=$base-$version_build
  49.     echo $folder_dir $fullname $arch $base $base_version $version-$build $build
  50.   }
  51. }
  52.  
  53.  
  54.  
  55. s1(){ while read p1; do split1 $p1; done < pacotes; }
  56. s2(){ while read p2; do split2 $p2; done < pacotes; }
  57.  
  58.  
  59.  
  60. benshmark()
  61. {
  62.   local LC_ALL= LC_NUMERIC=C TIMEFORMAT=%lR L=$1 s; shift
  63.   for s
  64.   {
  65.     echo -n "$s  "
  66.     time for ((i=0;i<L;i++)); { $s; } &> /dev/null
  67.   }
  68. }
  69.  
  70.  
  71.  
  72. $ echo -e "\ns1:"; s1 | column -ts' '
  73. s1:
  74. localhost  python-4.3.5-1-x86_64.chi.zst             x86_64  python             python-4.3.5-1             4.3.5-1   1
  75. localhost  python-zope-4.3.5-1-x86_64.chi.zst        x86_64  python-zope        python-zope-4.3.5-1        4.3.5-1   1
  76. localhost  python-zope-proxy-4.3.5-1-x86_64.chi.zst  x86_64  python-zope-proxy  python-zope-proxy-4.3.5-1  4.3.5-1   1
  77. localhost  xorg-server-xvfb-21.1.3-6-x86_64.chi.zst  x86_64  xorg-server-xvfb   xorg-server-xvfb-21.1.3-6  21.1.3-6  6
  78. localhost  xorg-fonts-100dpi-1.0.3-7-any.chi.zst     any     xorg-fonts-100dpi  xorg-fonts-100dpi-1.0.3-7  1.0.3-7   7
  79.  
  80. $ echo -e "\ns2:"; s2 | column -ts' '
  81. s2:
  82. localhost  python-4.3.5-1-x86_64.chi.zst             x86_64  python             python-4.3.5-1             4.3.5-1   1
  83. localhost  python-zope-4.3.5-1-x86_64.chi.zst        x86_64  python-zope        python-zope-4.3.5-1        4.3.5-1   1
  84. localhost  python-zope-proxy-4.3.5-1-x86_64.chi.zst  x86_64  python-zope-proxy  python-zope-proxy-4.3.5-1  4.3.5-1   1
  85. localhost  xorg-server-xvfb-21.1.3-6-x86_64.chi.zst  x86_64  xorg-server-xvfb   xorg-server-xvfb-21.1.3-6  21.1.3-6  6
  86. localhost  xorg-fonts-100dpi-1.0.3-7-any.chi.zst     any     xorg-fonts-100dpi  xorg-fonts-100dpi-1.0.3-7  1.0.3-7   7
  87.  
  88. $ benshmark 2000 s{1,2}
  89. s1  0m18.894s
  90. s2  0m1.073s
  91.  
  92. $ bc <<< 'scale=3; 18.894/1.073'
  93. 17.608
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement