Вы смешиваете здесь-документ и здесь-представляете-в-виде-строки синтаксис в Вашем вопросе об обновлении.
Любой здесь-документ использования:
while IFS= read -r line ; do
let var+=line #line 42
done <<ENDMARK
$(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")
ENDMARK
Или здесь-строка:
while IFS= read -r line ; do
let var+=line #line 42
done <<< $(sqlite3 -list -nullvalue NULL -separator ',' /var/log/asterisk/master.db "${QUERY}")
Используя awk
(или его кузен gawk
):
gawk '$2==2 {print $0}' inputfile
В awk
столбцы обозначаются a $
, с $1
первый столбец, $2
второе, и т.д. Целой строкой дают $0
. Так этот пример чтения: если столбец 2 равен 2, распечатайте целую строку.
Править: поскольку devnull сказал ниже:
gawk '$2==2' inputfile
достаточно. Распечатать строки с 2 во втором столбце и 4 в последнем использовании $NF
, который обозначает Количество Полей (т.е. последний столбец):
gawk '$2==2 && $NF==4' inputfile
{print $0}
избыточно здесь. Вы могли просто сказатьawk '{$2==2}' inputfile
. – devnull 08.10.2013, 12:22awk '$2==2'
илиawk '$2=="2"'
если Вы хотите сравнение строк (не, рассматривают02
или2.0
как то же как2
).gawk
больше внучкаawk
чем его кузен ;-) – Stéphane Chazelas 08.10.2013, 12:252
. – devnull 08.10.2013, 12:28awk '$2=="2" && $NF=="4"' inputfile
– devnull 08.10.2013, 12:44