GNU/Linux >> Linux Esercitazione >  >> Linux

Sed rimuove tutto fino al primo periodo compreso se c'è più di un periodo su quella riga e fallo per l'intero file?

sed rimuovendo tutto fino e includendo il primo punto se c'è più di un punto su quella riga e farlo per l'intero file.

Prima sed:

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

Dopo sed:

akamai.com
cloudflare.com
cdn.cloudflare.net

Risposta accettata:

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

Il sed lo script prima trova le righe che contengono almeno due punti usando l'espressione regolare \..*\. (potrebbe anche essere stato scritto [.].*[.] ). Per le righe corrispondenti, viene eseguita una sostituzione che rimuove tutto fino al primo punto incluso.

Usando awk , essendo un po' prolisso rispetto a quanto sopra:

$ 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

Qui, ogni volta che sono presenti più di due campi delimitati da punti, dividiamo la riga corrente in punti e quindi ricreiamo il record corrente da quello, saltando il primo campo. Il 1 finale alla fine fa stampare ogni riga (modificata o meno).

awk più breve allo stesso modo di sed soluzione:

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

Linux
  1. Sostituire una riga con un altro contenuto utilizzando Sed e Parallel per un file di grandi dimensioni?

  2. Linux:decomprimi e decomprimi il file .tar.gz utilizzando Cat, Tar e Gzip su una riga di comando?

  3. Codificare il contenuto del file e farlo eco come una riga?

  4. Come posso ottenere la risoluzione (larghezza e altezza) per un file video da una riga di comando di Linux?

  5. Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?

Come modificare la lunghezza della linea predefinita per Od e Hexdump?

Trova l'età del file più vecchio in una riga o restituisci zero?

Come eseguire il portachiavi in ​​un modo in cui solo la prima shell richiede le chiavi all'avvio?

Elimina i primi cinque caratteri su qualsiasi riga di un file di testo in Linux con sed

lo script bash aggiunge il testo alla prima riga di un file

Rimozione e aggiunta di autorizzazioni utilizzando la notazione numerica sulla stessa riga