Могу ли я создать переменные awk из текущих строк? - PullRequest
1 голос
/ 01 ноября 2019

У меня есть две строки:

Pid: 2
PPid: 1

И мне нужно напечатать что-то вроде этого:

PID_Process=2:PPID_Process=1

У меня есть это, но это не совсем работает:

awk -v PID='NR==1{$2}' 
    -v PPID='NR==2{$2}'
    '{print "PID="PID, "PPID="PPID}'

Ответы [ 3 ]

1 голос
/ 01 ноября 2019
$ awk -F': *' '
    { printf "%s%s_Process=%s", sep, toupper($1), $2; sep=":" }
    END { print "" }
' file
PID_Process=2:PPID_Process=1
1 голос
/ 01 ноября 2019

-v создает переменные до начала awk. Чтобы назначить их во время работы, вы хотите что-то вроде этого:

awk 'NR==1 {PID=$2}
     NR==2 {PPID=$2}
     END {print "PID="PID, "PPID="PPID}'

Или проще:

awk 'NR==1 {PID=$2}
     NR==2 {PPID=$2; print "PID="PID, "PPID="PPID; exit}'
0 голосов
/ 01 ноября 2019

Некоторые другие варианты

awk 'NR==1 {f=$2;next} {print "PID_Process="f":PPID_Process="$2}' file
PID_Process=2:PPID_Process=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...