Используйте awk, чтобы найти все столбцы, которые содержат значения выше и ниже указанных чисел? - PullRequest
0 голосов
/ 09 июня 2018

Мне нужна команда Awk, в которой я могу искать в большом файле столбцы, содержащие числа ниже 3 и выше 5 .Также необходимо пропустить первый столбец.

например, для следующего файла

   1 2 6 2
   2 1 7 3
   3 2 5 4
   4 2 8 7
   5 2 6 8
   6 1 9 9

В этом случае только столбец 4 соответствует, так как это единственный столбец со значениями выше 5и ниже 3 (за исключением столбца 1, который мы пропускаем).

В настоящее время у меня есть этот код:

 awk '{for (i=2; i<=NF; i++) {if ($i < 3 && $i > 5) {print i}}}'

Но это читает только одну строку за раз (поэтому никогда не делаетматч).Я хочу выполнить поиск по всем строкам, но не могу понять, как это делается.

В идеале выводом будет просто номер столбца.Так что для этого примера просто «4».

Большое спасибо.

1 Ответ

0 голосов
/ 09 июня 2018

Не могли бы вы выполнить следующие действия и сообщить, поможет ли это вам.

awk '{for(i=1;i<=NF;i++){if($i<3){col[i]++};if($i>5){col1[i]++}}} END{for(j in col){if(col[j]>=1 && col1[j]>=1){print j}}}'  Input_file

Если вы хотите начать поиск со второго столбца, измените i=1 на i=2 в приведенном выше коде.

РЕДАКТИРОВАТЬ: Добавление решения не один вкладыш тоже сейчас.

awk '
{
  for(i=1;i<=NF;i++){
    if($i<3)                   {  col[i]++ };
    if($i>5)                   {  col1[i]++}}
}
END{
  for(j in col){
    if(col[j]>=1 && col1[j]>=1){  print j  }}
}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...