Reputation: 35
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
Upvotes: 1
Views: 90
Reputation: 10123
A sed
solution could be:
sed 'h
s/[^-]*\(-[^0-9][^-]*\)*//
s/^-//
s/^/version: /
x
s/^/name: /
G
' file
Upvotes: 0
Reputation: 785068
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
Upvotes: 3