GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come sostituire tutte le stringhe in un file che iniziano con un prefisso?

Esempio:

1:20 2:25 3:0.432 2:-17 10:12

Voglio sostituire tutte le stringhe che iniziano con 2: a 2:0 .

Uscita:

1:20 2:0 3:0.432 2:0 10:12

Risposta accettata:

Usando sed :

sed -E 's/((^| )2:)[^ ]*/\10/g' in > out

Inoltre, come ispirato dalla risposta di Souravc, se c'è non una possibilità di un 2: sottostringa dopo l'inizio di una stringa non contenente un 2: iniziale sottostringa (ad es. c'è non una possibilità di un 1:202:25 string, che il seguente comando abbreviato sostituirebbe in 1:202:0 ), il comando potrebbe essere abbreviato in questo:

sed -E 's/2:[^ ]*/2:0/g' in > out

Comando n. 1 / n. 2 :

  • -E :rende sed interpreta il pattern come un pattern ERE (Extended Regular Expression);
  • > out :reindirizza stdout per out;

sed ripartizione del comando n. 1 :

  • s :afferma di eseguire una sostituzione
  • / :avvia il pattern
  • ( :avvia il gruppo di acquisizione
  • ( :inizia a raggruppare le stringhe consentite
  • ^ :corrisponde all'inizio della riga
  • | :separa la seconda stringa consentita
  • :corrisponde a un carattere
  • ) :interrompe il raggruppamento delle stringhe consentite
  • 2 :corrisponde a un 2 carattere
  • : :corrisponde a un : carattere
  • ) :interrompe il gruppo di acquisizione
  • [^ ]* :corrisponde a qualsiasi numero di caratteri diverso da
  • / :interrompe il pattern / avvia la stringa di sostituzione
  • \1 :backreference sostituito con il primo gruppo di acquisizione
  • :aggiunge un carattere
  • / :interrompe la stringa di sostituzione / avvia i flag di pattern
  • g :afferma di eseguire la sostituzione globalmente, cioè di sostituire ogni occorrenza del pattern nella riga

sed ripartizione del comando n. 2 :

  • s :afferma di eseguire una sostituzione
  • / :avvia il pattern
  • 2 :corrisponde a un 2 carattere
  • : :corrisponde a un : carattere
  • [^ ]* :corrisponde a qualsiasi numero di caratteri diverso da
  • / :interrompe il pattern / avvia la stringa di sostituzione
  • 2:0 :aggiunge un 2:0 stringa
  • / :interrompe la stringa di sostituzione / avvia i flag di pattern
  • g :afferma di eseguire la sostituzione globalmente, cioè di sostituire ogni occorrenza del pattern nella riga

Ubuntu
  1. Come installare il file deb in Ubuntu (con esempi)

  2. Come sostituire Grub con Burg?

  3. Come associare tutti i tipi di file all'interno di Wine con la relativa applicazione nativa?

  4. Come aprire il file .8 con Man?

  5. Come sostituire il testo come sed con python?

Come gestire i file con Scilab su Ubuntu 15.04

Come leggere un file con spazi in Linux

Come eseguire i comandi del file .sh tutto in una volta in Linux

Come sostituire gli spazi nei nomi dei file con i caratteri di sottolineatura sulla shell di Linux

Come ottenere il collegamento del file da scaricare con Wget?

Come sostituire un file in jar con la riga di comando in Linux?