проверьте столбец awk и получите результат

#awk #escaping

Вопрос:

учитывая 2 файла pri_seq и stb_seq для каждого номера первого столбца (потоки файлов) Я должен оценить второй столбец в ps и ss соответственно, а затем указать разницу вне сценария, в котором работает awk, но внутри сценария это не так, как если бы ему требовался побег

 cat pri_seq
         1                656369
         2                859638

cat stb_seq
         1                625743
         2                817088

cat threads
1
2


cat test.sh
#!/bin/sh

awk '{print $1}' pri_seq > threads

cat threads | while read line; do
        ps=` awk '$1==$line {print $2}' pri_seq`;
        ss=` awk '$1==$line {print $2}' stb_seq`;
        echo $ps
        echo $ss
#       ((diff=$ps-$ss))
        echo "Thread $line Sequence Primary= $ps  Sequence Standby = $ss  Difference = $diff"
done
  
 

он не оценивает ps и ss

 (PROD920) oracle@e812stb:/home/oracle/bin/chk_dg> ./test.sh


Thread 1 Sequence Primary=   Sequence Standby =   Difference =


Thread 2 Sequence Primary=   Sequence Standby =   Difference =


Thread  Sequence Primary=   Sequence Standby =   Difference =


out of the script:

ps=`awk '$1==1 {print $2}' pri_seq`
echo $ps
656369
 

у вас есть решение?

Ответ №1:

Ваш вопрос неясен, но это то, что вы пытаетесь сделать?

 awk '
    NR==FNR { ps[$1]=$2; next }
    { printf "Thread %d  Sequence Primary= %d  Sequence Standby= %d  Difference= %dn", $1, ps[$1], $2, ps[$1]-$2 }
' pri_seq stb_seq
Thread 1  Sequence Primary= 656369  Sequence Standby= 625743  Difference= 30626
Thread 2  Sequence Primary= 859638  Sequence Standby= 817088  Difference= 42550