cat pkg.temp
ca-certificates-2017.2.14-65.0.1.el6_9.noarch
glusterfs-3.7.9-12.el6.x86_64
glusterfs-api-3.7.9-12.el6.x86_64
glusterfs-api-devel-3.7.9-12.el6.x86_64
glusterfs-client-xlators-3.7.9-12.el6.x86_64
Вот файл, я хочу вывод как:
PkgName Version
ca-certificates 2017.2.14-65.0.1.el6_9.noarch
glusterfs 3.7.9-12.el6.x86_64
glusterfs-api-devel 3.7.9-12.el6.x86_64
glusterfs-client-xlators 3.7.9-12.el6.x86_64
Таким образом, я получаю нежелательный дефис в последнем:
$ awk -F'[[:digit:]]' '{ print $1}'
ca-certificates-
glusterfs-
glusterfs-api-
glusterfs-api-devel-
glusterfs-client-xlators-
В то время как печать привычки за 2$ отображает мою версию также
awk -F'[[:digit:]]' '{ print $2}' /tmp/Version-pkgs
.
.
.
.
.
.
Если Вы уверены, что комбинация разделителя "-" сопровождается цифрой, можно использовать sed для замены того тире пространством. Вы можете канал это через awk, чтобы сделать некоторую отформатированную печать. Что-то вроде этого:
sed -e 's/-\([0-9]\)/ \1/' _file_ | awk 'BEGIN {printf("%-30s %s\n", "PkgName", "Version")} {printf("%-30s %s\n", $1, $2)}'
Надеюсь, это поможет.