Использование awk для печати части одного столбца плюс дополнительные столбцы

Да, можете. Хотя Gentoo является исходным дистрибутивом -, он поддерживает бинарные инструменты и драйверы. В качестве примера, вот как использовать проприетарные драйверы NVIDIA:https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers

-1
17.04.2021, 00:18
3 ответа

С GNU awk для patsplit():

$ awk '
    BEGIN { FS=OFS="," }
    patsplit($2,a,/[[:alpha:]]+[0-9]+[[:alpha:]]/) {
        sub(/([0-9]+[[:alpha:]]+){3}[0-9]+$/,"",$2)
        print toupper(a[1]) "/" a[1] a[2], "UUID", $3, "SSH2", $2
    }
' latest.csv
ALP1A/alp1acscf0001v,UUID,192.7.129.7,SSH2,alp1acscf0001vm001oam
ALP1A/alp1acscf0001v,UUID,192.7.129.8,SSH2,alp1acscf0001vm001oam
ALP1A/alp1acscf0001v,UUID,192.7.129.9,SSH2,alp1acscf0001vm002oam
ALP1A/alp1acscf0001v,UUID,192.7.129.10,SSH2,alp1acscf0001vm003oam
ALP1A/alp1acscf0001v,UUID,192.7.129.11,SSH2,alp1acscf0001vm004cif
ALP1A/alp1acscf0001v,UUID,192.7.129.12,SSH2,alp1acscf0001vm004cif
ALP1A/alp1acscf0001v,UUID,192.7.129.13,SSH2,alp1acscf0001vm005cif

или с помощью GNU awk для соответствия 3-го аргумента():

$ awk '
    BEGIN { FS=OFS="," }
    match($2,/(([[:alpha:]]+[0-9]+[[:alpha:]])[[:alpha:]]+[0-9]+[[:alpha:]])[[:alpha:]]+[0-9]+[[:alpha:]]+/,a) {
        print toupper(a[2]) "/" a[1], "UUID", $3, "SSH2", a[0]
    }
' latest.csv
ALP1A/alp1acscf0001v,UUID,192.7.129.7,SSH2,alp1acscf0001vm001oam
ALP1A/alp1acscf0001v,UUID,192.7.129.8,SSH2,alp1acscf0001vm001oam
ALP1A/alp1acscf0001v,UUID,192.7.129.9,SSH2,alp1acscf0001vm002oam
ALP1A/alp1acscf0001v,UUID,192.7.129.10,SSH2,alp1acscf0001vm003oam
ALP1A/alp1acscf0001v,UUID,192.7.129.11,SSH2,alp1acscf0001vm004cif
ALP1A/alp1acscf0001v,UUID,192.7.129.12,SSH2,alp1acscf0001vm004cif
ALP1A/alp1acscf0001v,UUID,192.7.129.13,SSH2,alp1acscf0001vm005cif
1
28.04.2021, 22:52

Требуется GNU sed для запуска:

## delimiter, non-delimiter, run of 7 non-delimiters
d=, D="[^$d]" D7="(${D}{7})"
sed -Ee "
  s|^$D+,(($D7{2})$D{7})$D*,($D+),.*|ALP1A/\2,UUID,\4,SSH2,\1|
" latest.csv
0
28.04.2021, 22:52

команда:

awk -F "," '{print toupper(substr($2,1,5))"/"substr($2,1,14)",UUID,"$(NF-1)",SSH2,"substr($2,1,20)}' filename

выход

ALP1A/alp1acscf0001v,UUID,192.7.129.7,SSH2,alp1acscf0001vm001oa
ALP1A/alp1acscf0001v,UUID,192.7.129.8,SSH2,alp1acscf0001vm001oa
ALP1A/alp1acscf0001v,UUID,192.7.129.9,SSH2,alp1acscf0001vm002oa
ALP1A/alp1acscf0001v,UUID,192.7.129.10,SSH2,alp1acscf0001vm003oa
ALP1A/alp1acscf0001v,UUID,192.7.129.11,SSH2,alp1acscf0001vm004ci
ALP1A/alp1acscf0001v,UUID,192.7.129.12,SSH2,alp1acscf0001vm004ci
ALP1A/alp1acscf0001v,UUID,192.7.129.13,SSH2,alp1acscf0001vm005ci
1
28.04.2021, 22:52

Теги

Похожие вопросы