Вы можете использовать tee
с заменой процесса > ()
:
tail -f -n 20 file.log | tee >(grep 'pattern')
Это покажет вам последние 20 строк file.log
, а затем результат grep
.
$ echo 'CentOS Linux release 5.6.1804 (Core)'|awk '{print $4}'|awk -F '.' '{print $1}'
5
Нужно ли говорить больше?
Есть так много способов, вот один из них:
cat /etc/redhat-release | cut -d " " -f4 | cut -d. -f1
Проще было бы использовать что-то, что подготовлено именно для этого.:
[user@server]$ source /etc/os-release && echo $CENTOS_MANTISBT_PROJECT_VERSION
7
Если на вашем компьютере с CentOS установлено redhat-lsb
или redhat-lsb-core
:
lsb_release -sr | cut -d '.' -f 1
Это позволит получить релизную версию (только )с помощью команды lsb_release
, а затем cut
вывести бит перед первой точкой.
На 16.04
компьютере с Ubuntu:
$ lsb_release -sr | cut -d '.' -f 1
16
Использование awk:
awk -F '[.]' '{print $4}' /etc/redhat-release
Использование sed:
sed -E 's/[ Aa-Zz]*([0-9]+).*/\1/' /etc/redhat-release
Использование grep:
grep -Eo ' [0-9]' /etc/redhat-release
sed -Ee's/^. *([0 -9.]+ ). *$/\1/' /etc/redhat -release |cut -f1,1 -d.
Команда Sed извлекает полный номер версии (, такой же, как ваш AWK, поэтому вы можете использовать и его ), а вторая извлекает первое поле из него, используя '.' как разделитель.
, так что вы также можете использовать :awk '{print $4}' /etc/redhat -release |cut -f1,1 -d.
Я бы сделал что-то похожее на это. На моей коробке RH7:
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
$ cut -f 7 -d " " /etc/redhat-release
7.5
$ cut -f 7 -d " " /etc/redhat-release | IFS=. read MAJOR MINOR RELEASE
$ echo $MAJOR $MINOR $RELEASE
7 5
$
Теперь у вас есть все компоненты сборки в env var, к которым можно обращаться на досуге. Есть более сложные способы получить исходные данные, но я думаю, что это выходит за рамки этого вопроса, который просто извлекает компоненты строки версии с точками.