#1 Le 24/06/2020, à 07:14
- lynn
awk : mettre une espace entre deux caractères
Bonjour,
Dans le cadre d'un autre projet, j'envisage d'utiliser cette commande :
awk -F'[= ]' '/(PRETTY_NAME|VERSION_ID)/{gsub(/["]/,"");printf $2 }' /etc/os-release
Pour Ubuntu 20.04, ça renvoie
Ubuntu20.04
Y a-t-il une solution simple afin de mettre une espace entre Ubuntu et 20.04 ?
Merci.
Dernière modification par lynn (Le 24/06/2020, à 07:15)
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#2 Le 24/06/2020, à 07:45
- nany
Re : awk : mettre une espace entre deux caractères
Bonjour,
Il y a peut-être plus simple mais voilà ce que j’ai trouvé avec awk :
awk -F'[= "]' '/PRETTY_NAME/{os=$3" "};/VERSION_ID/{os=os$3};END{print os}' /etc/os-release
En ligne
#3 Le 24/06/2020, à 08:18
- lynn
Re : awk : mettre une espace entre deux caractères
Parfait !
Merci beaucoup nany.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#4 Le 24/06/2020, à 08:38
- pingouinux
Re : awk : mettre une espace entre deux caractères
Bonjour,
Autres solutions :
awk -F'"' '/PRETTY_NAME/{gsub(/\.[0-9]+ .*/,"",$2);print $2}' /etc/os-release
sed -rn '/PRETTY_NAME/s/^[^"]+"|\.[0-9]+ .*//gp' /etc/os-release
grep -Po '(?<=PRETTY_NAME=").*(?=\.\d+ .*)' /etc/os-release
Hors ligne
#5 Le 24/06/2020, à 17:37
- lynn
Re : awk : mettre une espace entre deux caractères
Merci pour vos réponses.
@pingouinux
Les deux premières commandes me renvoie tout ce qu'il y a après le premier signe égal... Je ne souhaiterais que le nom et la version.
La troisième commande ne me renvoie rien.
@MicP
J'avais bien pensé à la commande lsb_release mais elle n'est pas disponible nativement sur certaines distributions. Par contre, le fichier /etc/os-release semble être une constante. C'est pourquoi, je privilégie celui ci afin de récupérer les infos voulues mais bon, c'est moins simple...
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#6 Le 24/06/2020, à 17:50
- lynn
Re : awk : mettre une espace entre deux caractères
@nany
Ta commande fonctionne bien sur les *buntu par contre pour certains fichiers os-release, le nom et la version de la distribution ne sont pas entourés de guillemets et donc la commande ne fonctionne plus sauf à changer $3 par $2...
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#7 Le 24/06/2020, à 18:02
- pingouinux
Re : awk : mettre une espace entre deux caractères
@pingouinux
Les deux premières commandes me renvoie tout ce qu'il y a après le premier signe égal... Je ne souhaiterais que le nom et la version.
La troisième commande ne me renvoie rien.
Dans ce cas, montre le contenu de ton /etc/os-release. Chez moi ça fonctionne.
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
$ awk -F'"' '/PRETTY_NAME/{gsub(/\.[0-9]+ .*/,"",$2);print $2}' /etc/os-release
Ubuntu 16.04
$ sed -rn '/PRETTY_NAME/s/^[^"]+"|\.[0-9]+ .*//gp' /etc/os-release
Ubuntu 16.04
$ grep -Po '(?<=PRETTY_NAME=").*(?=\.\d+ .*)' /etc/os-release
Ubuntu 16.04
Hors ligne
#8 Le 24/06/2020, à 18:15
- lynn
Re : awk : mettre une espace entre deux caractères
Le fichier os-release d'Ubuntu 20.10
NAME="Ubuntu"
VERSION="20.10 (Groovy Gorilla)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu Groovy Gorilla (development branch)"
VERSION_ID="20.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=groovy
UBUNTU_CODENAME=groovy
et sous Ubuntu 20.04 les trois commandes me renvoient ça
Ubuntu 20
Le fichier os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#9 Le 24/06/2020, à 18:53
- pingouinux
Re : awk : mettre une espace entre deux caractères
Cette commande donne le bon résultat pour ma 16.04 et ta 20.04 :
grep -Po '(?<=PRETTY_NAME=").* \d+\.\d+(?=(\.\d+)? .*)' /etc/os-release
Elle ne traite que la ligne PRETTY_NAME=, qui ne contient pas le numéro de version dans ta 20.10.
Hors ligne