фильтрация данных в текстовом файле с использованием awk - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь отфильтровать строки по одному столбцу в большом текстовом файле.Вот небольшой пример:

example:

-3261   1
777 1
-45574  1
1017    1
-2802   1
969 1
1800    1
-128768 1
-7614   1
-136751 1
-64104  1
134844  1

Я хочу фильтровать по первому столбцу.если числа в 1-м столбце меньше 4000 или больше -4000, оставьте строку и отфильтруйте остальные.вот ожидаемый результат:

expected output:

-3261   1
777 1
1017    1
-2802   1
969 1
1800    1

Я использую awk, используя этот код:

awk -F "\t" '{ if($1 >= -4000 || $1 <= 4000) { print } }' infile.txt > outfile.txt

, используя этот код, выводтакой же, как входной файл.ты знаешь как это исправить?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Прежде всего, вы должны знать, что

меньше 4000 или больше -4000

и

меньше 4000 И больше -4000

отличаются.

-80000 действительно для условия OR, но не для2-й.Я надеюсь, что вы имели в виду правильные вещи.По вашему требованию ( ИЛИ один) вы можете сделать (следуя вашему требованию "или"):

awk '$1>=-4000 || $1<=4000'   file

Обратите внимание, что сначала будет проверена >=-4000, то естьстрока со значением 99999999 будет действительна при выводе.

Если вы имели в виду условие И , вам необходимо:

awk '$1<4000 && $1>-4000' file
0 голосов
/ 12 декабря 2018

другой способ написать это

$ awk '$1^2 <= 4000^2' input_file
0 голосов
/ 12 декабря 2018

Не могли бы вы попробовать следующее.

awk '$1<4000 && $1>-4000'   Input_file

Если ваш код работает неправильно, вам нужно поставить условие &&, так как вы хотите проверить оба условия, чтобы они были ИСТИНА.|| условия будут печатать эти элементы также там, где любое из условий ИСТИНА тоже.

Более подробная информация об операторах && и || со страницы man awk:

   The &&, ||, and !  operators are logical AND, logical OR, and logical NOT, respectively, as in C.  They do short-circuit evaluation,

также как в C, и используются для объединения более примитивных выражений шаблонов.Как и в большинстве языков, круглые скобки могут использоваться для изменения порядка оценки.

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