сценарий оболочки для печати строк, если существует значение в столбце 2

Вы смешиваете здесь-документ и здесь-представляете-в-виде-строки синтаксис в Вашем вопросе об обновлении.

Любой здесь-документ использования:

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}")
1
18.08.2015, 12:31
1 ответ

Используя 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
7
27.01.2020, 23:13
  • 1
    {print $0} избыточно здесь. Вы могли просто сказать awk '{$2==2}' inputfile. –  devnull 08.10.2013, 12:22
  • 2
    @devnull, ITYM awk '$2==2' или awk '$2=="2"' если Вы хотите сравнение строк (не, рассматривают 02 или 2.0 как то же как 2). gawk больше внучка awk чем его кузен ;-) –  Stéphane Chazelas 08.10.2013, 12:25
  • 3
    @StephaneChazelas, кажется, что OP хотел бы заключить в кавычки 2. –  devnull 08.10.2013, 12:28
  • 4
    это возможный указать и, если я хочу распечатать строку с 2 во втором столбце и 4 в последнем столбце. –  Kevin Parker 08.10.2013, 12:39
  • 5
    @KevinParker Говорит awk '$2=="2" && $NF=="4"' inputfile –  devnull 08.10.2013, 12:44

Теги

Похожие вопросы