skip to Main Content

The packages are in the same folder and are able to list by
" ls -al | cut -c 47-" and show as below

ncurses-6.2  
netifd-2020-06-06-51e9fb81  
net-snmp-5.9.1  
nettle-3.5.1  
nginx-util-1.4  
odhcpd-full  
openldap-2.4.48  
openssl-1.1.1g    
pciutils-3.7.0  
pcre-8.44  
pcsc-lite-1.8.13

I want to print out like this

name: ncurses-6.2  
version: 6.2  
name: netifd-2020-06-06-51e9fb81  
version: 2020-06-06-51e9fb81  
name: net-snmp-5.9.1  
version: 5.9.1  
name: nettle-3.5.1
version: 3.5.1
name: nginx-util-1.4
version 1.4
.
.
.

Currenly I use this in a shell script

ls -al | cut -c 47- > package_list
awk '{ print "- name: "$1"n version: "}' package_list

Please advise how to improve the shellscript, thanks

2

Answers


  1. You may try this awk:

    awk '{
       print "name:", $0
       sub(/^[^-]+(-[^0-9][^-]*)*(-|$)/, "")
       print "version:", $0
    }' file
    
    name: ncurses-6.2
    version: 6.2
    name: netifd-2020-06-06-51e9fb81
    version: 2020-06-06-51e9fb81
    name: net-snmp-5.9.1
    version: 5.9.1
    name: nettle-3.5.1
    version: 3.5.1
    name: nginx-util-1.4
    version: 1.4
    name: odhcpd-full
    version:
    name: openldap-2.4.48
    version: 2.4.48
    name: openssl-1.1.1g
    version: 1.1.1g
    name: pciutils-3.7.0
    version: 3.7.0
    name: pcre-8.44
    version: 8.44
    name: pcsc-lite-1.8.13
    version: 1.8.13
    
    Login or Signup to reply.
  2. A sedsolution could be:

    sed 'h
         s/[^-]*(-[^0-9][^-]*)*//
         s/^-//
         s/^/version: /
         x
         s/^/name: /
         G
    ' file
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search