GREP / AWK для стоимости между

Предполагаю, что удаление точек из номера версии - это опечатка.

sed легко справится с этой задачей:

echo 'Version …………2.465.76.8.332' | sed 's/^[^0-9]*//'

Чтобы извлечь только номер версии из файла, номер которого является первой строкой, начинающейся с 'Version', и за номером версии ничего не следует, вы можете сделать:

sed -n '0,/^Version/ s/^Version[^0-9]*//p' file
0
21.01.2019, 15:36
2 ответа

Следующий шаблон должен сделать это:

grep -E 'Size: (?:100|[1-9]|[0-9]{2})]' test

Я говорю grep использовать расширенный синтаксис RegEx(-E)и пытаюсь сопоставить либо 100, либо значение от 0 до 99, следующее заSize:

-1
28.01.2020, 04:03

Awk упрощает эту задачу:

awk '{size=$5; sub(/]/, "", size); size=size+0; if (size <= 100 && size >= 1) {print $0 } }' file_to_read.txt

Напишите это более дружелюбно:

awk '{
    # create a new variable "size".
    # items are separated by spaces, we need the 5th item
    size=$5;

    # remove the trailing "]"
    sub(/]/, "",  size);

    # make sure size is an int
    size=size+0;

    # Choose rows with seize between 1 and 100
    if (size <= 100 && size >= 1) {
        # print the whole line
        print
    }

    }'  file_to_read.txt
1
28.01.2020, 04:03

Теги

Похожие вопросы