нужна помощь по команде awk - PullRequest
0 голосов
/ 15 декабря 2011

вот команда awk

awk '
BEGIN {
  row=1
  while ( getline < "routingTB.txt" > 0 )
  {
     if( row==1 )      { col_id=$1; for( i=2; i<=NF; i++ ) q_id[i]=$i }
     else if( row==2 )
     for( i=2; i<=NF; i++ ) { s[q_id[i]]=$i; s_id[q_id[i]]=$1 }
     else
     for( i=2; i<=NF; i++ )
     if( $i<s[q_id[i]] ) { s_id[q_id[i]]=$1; s[q_id[i]]=$i }
   row++
 }
 }
 {  print $1, (NR>1 ? s_id[$1] : col_id) , $3 } ' query.txt

эта команда используется для следующих действий

У меня есть два файла file1:

query times attributes
q1 345 a1,a2
q2 547 a1,a4,a5
q5 967 a1

file2:

solution q1 q2 q3 q4 q5
s1 3425 1346 758 2245 928
s2 145 243 2983 1890 899
s3 333 209 1779 230 902

Желаемый вывод:

query solution attributes
q1 s2 a1,a2
q2 s3 a1,a4,a5
q5 s2 a1

в журнале ошибок написано "непревзойденный".

Понятия не имею, что происходит. У меня есть только две одинарные кавычки. нужна помощь. Спасибо

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Вам нужна строка Шебанга вверху сценария.

#!/bin/sh

Ошибка - результат того, что csh не знает, как анализировать ввод. Прекратите использовать csh.

0 голосов
/ 16 декабря 2011

Всегда полезно поместить сценарии в файл, чтобы его было легче понять.

ничего не изменилось, я просто поместил ваш скрипт в файл и с отступом

bash-3.2$ cat sample.awk
#!/bin/awk -f
BEGIN {
        row=1
        while ( getline < "routingTB.txt" > 0 )   {
                if( row==1 )      {
                        col_id=$1;
                        for( i=2; i<=NF; i++ ) q_id[i]=$i
                }
                else if( row==2 )
                        for( i=2; i<=NF; i++ )
                        {
                                s[q_id[i]]=$i; s_id[q_id[i]]=$1
                        }
                else  for( i=2; i<=NF; i++ )
                        if( $i<s[q_id[i]] ) { s_id[q_id[i]]=$1; s[q_id[i]]=$i }
                row++
        }
}
{
        print $1, (NR>1 ? s_id[$1] : col_id) , $3
}
bash-3.2$

Выполнение вашего скрипта

bash-3.2$ awk -f sample.awk query.txt
query solution attributes
q1 s2 a1,a2
q2 s3 a1,a4,a5
q5 s2 a1
...