Предполагаю, что удаление точек из номера версии - это опечатка.
sed
легко справится с этой задачей:
echo 'Version …………2.465.76.8.332' | sed 's/^[^0-9]*//'
Чтобы извлечь только номер версии из файла, номер которого является первой строкой, начинающейся с 'Version', и за номером версии ничего не следует, вы можете сделать:
sed -n '0,/^Version/ s/^Version[^0-9]*//p' file
Следующий шаблон должен сделать это:
grep -E 'Size: (?:100|[1-9]|[0-9]{2})]' test
Я говорю grep использовать расширенный синтаксис RegEx(-E
)и пытаюсь сопоставить либо 100
, либо значение от 0 до 99, следующее заSize:
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