У меня есть список массивов с различной информацией, на которой я делаю awk.Awk действует как замена
number location length value
1 2 40 0.96
--- 5 45 0.97
4 5 47 0.96
--- 5 35 0.95
2 5 60 0.95
--- 3 55 0.96
awk '{if ($2=5 && $3 >= 40 && $3<=50 && $6>=0.96) print $0}' Infile.txt
Это дает мне правильную строку --- 5 45 0.97
и 4 5 47 0.96
. Однако, если я хочу добавить еще одно условие, например, $1= ---
, чтобы только первый выход --- 5 45 0.97
awk '{if ($2=5 && $3 >= 40 && $3<=50 && $6>=0.96 && $1="\-\-\-") print $0}' Infile.txt >List_position.txt
он действует в качестве замены, возвращая предыдущий вывод как 1 5 45 0.97
и 1 5 47 0.96
. Я пробовал с $1=---
, $1='\-\-\-'
, и они оба не работали. Если я попробую с $1="---"
, он заменит $ 1 на ---
.
Я новичок в awk, и я действительно не понимаю, почему он делает замену. Если " "
является заменой в awk, как я могу поставить условие на ---
?
+1 для обладания глазами ястреба! –
Спасибо! Итак, '=' вместо '==' изменяет $ 1 за то, что происходит после? – Renaud
На самом деле '$ 2 = 5' хорошо написано в моем скрипте как' $ 2 == 5'. Я должен был видеть разницу – Renaud