2014-11-07 3 views
1

Мне было интересно, почему это awk командной строки не печатает FILENAME.AWK не печатается

WORD=abrego 
NWORD=${#WORD} 
awk -F", " -v var3=$NWORD -v var2="$WORD" -v var1="colombia" \ 
'gsub(/^c1 \[[^]]*\]/,",") \ 
$NF==var1 && (var3==length($(NF-2)) || var3==length($(NF-1))) && ($(NF-2)==var2 || $(NF-1)==var2) \ 
{print FILENAME}' file* 

file1:

c1 [gaston zamora-abrego, j.] univ nacl colombia sede medellin, dept ciencias forestales, medellin, colombia 

file2:

c1 [zamora-abrego, joan g.] univ nacl colombia, dept ciencias forest, grp ecol conservac fauna silvestre, sede medellin, colombia 

file3:

c1 [gaston zamora-abrego, j.] univ nacl colombia, dept ciencias forestales, fac ciencias agr, medellin , antioquia, colombia 

file4:

c1 [perez, maritza] abrego, norte de santander, colombia 

Ожидаемый результат

file4 

ответ

1

gsub функции в коде нужно выполнить первый, чтобы другие условия работы.

Это должно работать:

awk -F", " -v var3=$NWORD -v var2="$WORD" -v var1="colombia" '{gsub(/^c1 \[[^]]*\]/,",")} 
    $NF==var1 && (var3==length($(NF-2)) || var3==length($(NF-1))) && 
    ($(NF-2)==var2 || $(NF-1)==var2) {print FILENAME}' file* 
+1

Поздравляем с 200k точек, кстати. Всего один год за последние 100 тысяч - отличная работа! –

+1

Да, это работает, большое спасибо за то, что помогли мне и хорошо провели день. –

+0

@MarkSetchell: Спасибо большое за ваши добрые пожелания. – anubhava

Смежные вопросы