Impara Linux

Sostituzione di una stringa in Bash

Sostituzione di una stringa in Bash

Bash è un processo di comando compatibile con la shell UNIX il cui compito principale è manipolare le stringhe condotte in un ambiente shell. I programmatori sono talvolta chiamati a lavorare su file diversi different. Possono aggiungere, eliminare e sostituire parti o l'intero file per adattarlo al proprio lavoro. Ciò richiede la conoscenza della sostituzione della stringa in bash. La memorizzazione dei dati può essere temporanea o permanente, a seconda della natura dei dati nature. La stringa del file è essenziale quando si sostituisce il contenuto del file.

Sostituzione di una stringa in Bash

sed è vitale ed è utile per aiutare a sostituire le stringhe in un file con script bash. L'editor di stringhe può essere utilizzato in diversi modi per sostituire il contenuto del file in bash. Un editor di stringhe alternativo ma sonoro è awk che può essere messo in gioco quando si sostituisce il valore della stringa da un file usando bash. Questo articolo mostrerà con l'aiuto di esempi come il contenuto del file può essere sostituito in bash. Nota che la conoscenza dei modelli regex può anche essere di grande valore quando si sostituisce una stringa in bash.

Manipolazione delle stringhe di Bash

Quando si eseguono sostituzioni minori o semplici, il sed non è richiesto. Bash può fare la manipolazione.

Per esempio:
Quando si sostituisce un fosslinux.gif con .mp4, sed non è richiesto.
Per eseguire il processo usando bash, usa il testo codificato di seguito:

#/bin/bash nome_file="fosslinux.gif" new_extension="mp4" # Sostituisci .gif con .mp4 generato_nome_file=$nome_file/.gif/.$new_extension echo nome_file_generato

Sostituzione di una stringa usando sed

sed può essere definito un editor di flussi. Sed può sostituire una stringa nei file. Diamo un'occhiata a un esempio di un file chiamato singleboardbytes.txt che contiene le seguenti informazioni:
Foss Linux è un ottimo sito di apprendimento per qualsiasi utente Linux. Dai un'occhiata agli articoli pubblicati da Foss Linux sul loro sito.

Ora dal nostro file, dobbiamo sostituire la parola "luogo" con "sito web" e rinominare il file in fosslinux.TXT.

Comprendere la sintassi di sed

sed -i 's/search_string/replace_string/' nomefile sed - è il comando utilizzato nell'esecuzione della sintassi sopra '-io' - utilizzato nella modifica dei contenuti nel file originale con una stringa sostitutiva ogni volta che il valore di ricerca esiste nel file. 'S' - questo è il comando sostitutivo 'stringa di ricerca' - questo rappresenta il valore della stringa che deve essere ricercato per la sostituzione nel file originale 'stringa_sostituisci' - questo rappresenta il valore della stringa che viene utilizzato per sostituire il valore cercato. La stringa dovrebbe corrispondere alla stringa trovata dal comando 'search_string'. 'nome del file' - questo è il nome del file con cui verrà applicata la sostituzione.

Esegui il seguente comando nel tuo terminale:

sed 's/site/website/g' singleboardbytes.txt > fosslinux.TXT

Sostituzione delle stringhe usando sed

Nota: puoi anche eseguire il comando sopra inserendolo come script bash.
Sostituzione utilizzando il -io comando

Dopo aver eseguito il comando, il passaggio successivo consiste nel sostituire utilizzando il -io comando. -io è una rappresentazione per "sul posto", il che significa che il file viene solo sostituito e non c'è creazione di file extra. Usando il nostro esempio sopra, esegui il seguente comando:

sed -i 's/site/website/g' singleboardbytes.TXT

Sostituzione usando il comando -i

Dalla figura sottostante, puoi vedere un punto esclamativo che dice, Il file "/home/tuts/singleboardbytes.txt modificato su disco."questo dimostra che le modifiche sono state apportate con successo.

Modifiche apportate a singleboardbytes.TXT

La figura sottostante è il file contenente le modifiche apportate nel passaggio precedente, sia al nome del file (singleboardbytes.txt in fosslinux.txt) e la parola luogo è stato cambiato in sito web.

Modifica finale dopo aver eseguito il comando sed

Utilizzo di una variabile come valori di ricerca e sostituzioni

Con una piccola interpolazione, le variabili possono essere utilizzate per sostituire le stringhe. Il primo argomento sed, in questo caso, deve usare le virgolette doppie invece delle virgolette singole. Ad esempio, il tuo codice sarà simile a quello qui sotto:

tuts()  ricerca locale=$1 sostituzione locale=$2 # Nota le doppie virgolette sed -i "s/$ricerca/$sostituisci/g" singleboardbytes.TXT 

Utilizzo di una variabile come valori di ricerca e sostituzioni

sed ha due gusti, vale a dire: the FreeBSD e il Linux sed. Le distribuzioni Linux usano il sed di Linux mentre gli utenti di OS X usano il sed di FreeBSD. Questi sapori sono abbastanza diversi, e quindi non si possono trasferire comandi da un sapore sed a un altro.

Ad esempio, durante la sostituzione del contenuto del file utilizzando FreeBSD, un backup dovrebbe essere eseguito utilizzando il .estensione bak. Oppure puoi avviare un backup con l'uso di coppie vuote di virgolette immediatamente dopo la notazione -i come mostrato nella sintassi bash di seguito:

tuts()  ricerca locale=$1 sostituzione locale=$2 sed -i "" "s/$ricerca/$sostituzione/g" singleboardbytes.TXT 

Se non viene eseguito un backup durante l'utilizzo di FreeBSD come illustrato nel codice di sintassi sopra, cadrai in un errore come quello mostrato di seguito:

sed: 1: "/Users/user/path/tuts… ": caratteri extra alla fine del comando h

Come sostituire un file e abbinare il modello di cifre usando il comando sed

Se esegui con successo lo script, verrà eseguita una ricerca per tutto il contenuto numerico presente in un file. Quindi il contenuto verrà sostituito aggiungendo $ prima dei numeri.

#!/bin/bash # Verifica che il valore dell'argomento della riga di comando esista o meno se [ $1 != "" ]; then # Cerca tutte le stringhe contenenti cifre e aggiungi $ sed -i 's/\b[0-9]\5\\b/$&/g' $1 fi

Sostituzione di una stringa usando il comando awk

In questo caso, useremo il comando awk invece del comando sed per sostituire il contenuto di un file. La differenza tra questi comandi è che il comando sed aggiorna direttamente il file originale, il che non è il caso del comando awk.

#!/bin/bash # Verifica che il valore dell'argomento della riga di comando esista o meno se [ $1 != "" ]; then # Cerca tutte le stringhe in base alla data awk 'sub("02/06/2020","12/06/2020")1' $1 > temp.txt && mv temp.txt $1 fi

Conclusione

Gli esempi sopra sono vitali per i tuoi progressi nell'apprendimento di come sostituire una stringa in Bash. Pertanto, per essere bravo, dovrai esercitarti regolarmente. La ricerca e la sostituzione di una stringa in un file potrebbe sembrare complessa, ma la troverai molto più gestibile se segui correttamente le nostre linee guida.

Un punto da notare è che l'esecuzione dei comandi potrebbe a volte sembrare più gestibile, ma dovresti stare attento a non provocare il caos da sed. Quando inserisci i comandi sbagliati, romperai il tuo computer, causandoti più problemi come la perdita di dati. Quindi, per sicurezza, copia e incolla sempre il codice così com'è sul tuo terminale. Ciò eviterà errori di ortografia che potrebbero danneggiare la macchina. Speriamo che questo articolo ti abbia aiutato a imparare come sostituire una stringa in bash usando questo articolo.

Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...
Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...
OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...