GNU/Linux >> Tutoriels Linux >  >> Linux

Sed Supprimer tout jusqu'à la première période et y compris s'il y a plus d'une période sur cette ligne et faire cela pour l'ensemble du fichier ?

sed supprimer tout jusqu'au premier point inclus s'il y a plus d'un point sur cette ligne et faire cela pour l'ensemble du fichier.

Avant sed :

akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net

Après sed :

akamai.com
cloudflare.com
cdn.cloudflare.net

Réponse acceptée :

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Le sed le script correspond d'abord aux lignes qui contiennent au moins deux points en utilisant l'expression régulière \..*\. (aurait pu aussi s'écrire [.].*[.] ). Pour les lignes correspondant à cela, une substitution qui supprime tout jusqu'au premier point inclus est effectuée.

Utiliser awk , étant un peu long par rapport à ce qui précède :

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Ici, chaque fois qu'il y a plus de deux champs délimités par des points, nous divisons la ligne actuelle en points, puis recréons l'enregistrement actuel à partir de cela, en sautant le premier champ. Le 1 de fin à la fin provoque l'impression de chaque ligne (modifiée ou non).

awk plus court de la même manière que le sed solution :

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Linux
  1. Comment insérer du texte avant la première ligne d'un fichier ?

  2. Linux - Décompresser et désarchiver le fichier .tar.gz à l'aide de Cat, Tar et Gzip sur une seule ligne de commande ?

  3. Comment changer la longueur de ligne par défaut pour Od et Hexdump ?

  4. Comment exécuter le trousseau d'une manière qui n'a que la première invite du shell pour les clés au démarrage ?

  5. Comment scinder un fichier et conserver la première ligne dans chacun des morceaux ?

Encoder le contenu du fichier et le répercuter sur une seule ligne ?

Trouver l'âge du fichier le plus ancien sur une ligne ou renvoyer zéro ?

Comment puis-je obtenir la résolution (largeur et hauteur) d'un fichier vidéo à partir d'une ligne de commande Linux ?

Supprimez les cinq premiers caractères de n'importe quelle ligne d'un fichier texte sous Linux avec sed

script bash ajoute du texte à la première ligne d'un fichier

xargs substitution de plus d'un argument