линия извлечения зависит от диапазона для конкретных столбцов - PullRequest
0 голосов
/ 19 августа 2010

Я хотел бы извлечь некоторые строки из текстового файла, я недавно начал настраивать sed,

У меня есть файл со структурой

88 3 3 0 0 1 101 111 4 3
89 3 3 0 0 1 3 4 112 102
90 3 3 0 0 1 102 112 113 103
91 3 3 0 0 2 103 113 114 104

Что я хотел быdo - извлечь информацию в соответствии со вторым столбцом, я использую sth, как в моем скрипте bash (аргумент 2 - infile)

sed  -n '/^[0-9]* [23456789]/ p' < $2 > out

, однако у меня есть другие записи, кроме диапазона, например [23456789]10, так как он состоит из 1 и 0, чтобы получить, что эти два символа должны быть в диапазоне, я думаю, однако есть записи с '1' (для второго столбца), которые я не люблю хранить, так как можно написать10, но не 1.

Best, Umut

Ответы [ 3 ]

0 голосов
/ 19 августа 2010
sed  -rn '/^[0-9]* ([23456789]|10)/ p'  < $2 > out

Вам нужна поддержка extend-regexp (-r), чтобы иметь |оператор (или)

Другой интересный способ:

sed  -rn '/^[0-9]* ([23456789]|[0-9]{2,})/ p'  < $2 > out

Что означает [23456789] или 2 или более повторения цифры.

0 голосов
/ 19 августа 2010

В мгновенном вы видите столбцы переменного размера в ваших данных, вам следует задуматься о awk:

awk '$2 > 1 && $2 < 11 {print}{}'

добьется цели, если ваш формат файла правильный.

0 голосов
/ 19 августа 2010
sed -rn '/^[0-9]* (2|3|4|5|6|7|8|9|10)/p' < $2 > out
...