Как я могу сделать предложение 'where' в оболочке Linux? - PullRequest
4 голосов
/ 24 марта 2012

У меня есть файл CSV, и я хотел бы отфильтровать все строки, где в 19-м столбце есть два или более символов. Я знаю отдельные части, но не могу понять, как их склеить. Сначала я должен просмотреть файл. Следующая печать 19-го столбца

awk -F "," '{print $19}' file.txt 

awk также имеет длину и ifs

И я знаю, что все это должно быть склеено с помощью труб. Я просто застрял в точном синтаксисе, так как раньше я не занимался программированием на bash.

Ответы [ 2 ]

8 голосов
/ 24 марта 2012

Программа AWK представляет собой серию пар шаблонных действий, записанных как:

condition { action }

Часть condition является вашим фильтром.

Например, чтобы получить все строки (в 19-м столбце есть как минимум 2 символа):

$ awk -F, 'length($19)>1' file.txt

Если часть {action} отсутствует, действие по умолчанию - распечатать запись.

1 голос
/ 24 марта 2012

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

awk -F ',' '{if (length($19) < 2) { print $0 }}' file.txt

Печатает всю строку, если длина 19-го поля меньше 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...