Je souhaite imprimer uniquement les noms de machines Linux suivants à partir de /tmp/file.txt

Tandis que xx est un nombre de 01 à 999

Linux_serverXX
Linux_agentXX
Linux_masterXX

Le fichier est

more /tmp/file.txt

Linux_server01
Linux_server02
Linux_server03
Linux_main01
Linux_main02
Linux_agent01
Linux_agent02
Linux_agent03
Linux_domain_server01
Linux_master01
Linux_master02
Linux_master02
Linux_alert01
Linux_alert02

Alors on a fait ça

egrep "Linux_server[[:digit:]]|Linux_agent[[:digit:]]|Linux_master[[:digit:]]" /tmp/file

Est-ce une approche suffisante pour exclure les noms que nous voulons?

0
Judy 29 nov. 2020 à 14:20

2 réponses

Meilleure réponse
grep -Eo 'Linux_(server|agent|master)[[:digit:]]{2,3}' file

Comme vous avez spécifié que le nombre peut aller de 01 à 999, je serais plus strict avec le nombre correspondant et spécifierais des chiffres avec une plage de longueur de 2 à 3.

2
Raman Sailopal 29 nov. 2020 à 13:45

Pourriez-vous s'il vous plaît essayer de suivre, écrit et testé avec les exemples présentés dans GNU awk.

awk 'match($0,/Linux_(server|agent|master)[0-9]+/){print substr($0,RSTART,RLENGTH)}' Input_file

OU utilisez ce qui suit au cas où vous auriez plusieurs correspondances sur une seule ligne, cela pourrait alors aider:

awk '
{
  while(match($0,/Linux_(server|agent|master)[0-9]+/)){
    print substr($0,RSTART,RLENGTH)
    $0=substr($0,RSTART+RLENGTH)
  }
}
'  Input_file

<₹Explanation: Ajout d'une explication détaillée pour ci-dessus.

awk '                                                     ##Starting awk program from here.
{
  while(match($0,/Linux_(server|agent|master)[0-9]+/)){   ##using while loop which will run till a match of regex is found in match function.
    print substr($0,RSTART,RLENGTH)                       ##Printing sub string from RSTART till RLENGTH.
    $0=substr($0,RSTART+RLENGTH)                          ##Saving rest of line(without matched part above) in current line itself.
  }
}
'  Input_file                                             ##Mentioning Input_file name here.
1
RavinderSingh13 29 nov. 2020 à 12:10