Как выбрать пробелы больше 10 в столбце в Unix? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть файл из 2 столбцов, в котором я пытаюсь найти пробелы, превышающие 10 в последовательных числах:

файл находится в порядке возрастания следующим образом:

a     12

b     16

c     19

d     25

e     28

f     38

g     **40**

h     **55**

i     56

j     59

k     62

Что яхотел бы иметь возможность печатать каждый 1-й идентификатор столбца (ak) для каждого вхождения, где два числа ADJACENT из 2-го столбца имеют значение больше 10.

Например, искомый вывод здесь: g, h (так как разница между 2-м столбцом, связанным с g и h, больше 10)

Очень признателен за вашу помощь:)

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Использование awk

awk ' { c=$2; if(c-p>10 && NR>1 ) { print a,p; print $0 } p=c;a=$1 } ' 

со входами

$ awk ' { c=$2; if(c-p>10 && NR>1 ) { print a,p; print $0 } p=c;a=$1 } ' waheed.txt
g 40
h 55

$ cat waheed.txt
a 12
b 16
c 19
d 25
e 28
f 38
g 40
h 55
i 56
j 59
k 62

$
0 голосов
/ 04 февраля 2019

Есть много способов сделать это, используя perl, awk или даже только сценарий оболочки, например:

while read ID num
do  if expr "$num" - "$prenum" ">" 10 >/dev/null 2>&1   # discard expr output
    then    echo $preID, $ID
    fi
    preID=$ID prenum=$num
done <2_column_file # your 2 column file

Я предположил, что ваш 2 файл столбца на самом деле не содержит пустых строк, а приведенные выше являются артефактами проблем с форматированием SO (вы могли бы использовать ``` строк вокруг).

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