GNU/Linux >> Linux Esercitazione >  >> Linux

Esempi di manipolazione di stringhe Bash:lunghezza, sottostringa, trova e sostituisci

In bash shell, quando usi un simbolo del dollaro seguito da un nome di variabile, shell espande la variabile con il suo valore. Questa caratteristica della shell è chiamata espansione dei parametri.

Ma l'espansione dei parametri ha numerose altre forme che consentono di espandere un parametro e modificare il valore o sostituire altri valori nel processo di espansione. In questo articolo, esaminiamo come utilizzare il concetto di espansione dei parametri per le operazioni di manipolazione delle stringhe.

Questo articolo fa parte della serie di tutorial bash in corso. Fare riferimento al nostro precedente articolo sull'espansione bash { }.

1. Identifica la lunghezza della stringa all'interno dello script Bash Shell

${#string}

Il formato precedente viene utilizzato per ottenere la lunghezza della variabile bash data.

$ cat len.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${#var}

$ ./len.sh
24

Per saperne di più sulle variabili bash, leggi 6 esempi pratici di variabili Bash globali e locali.

2. Estrai una sottostringa da una variabile all'interno dello script della shell Bash

Bash fornisce un modo per estrarre una sottostringa da una stringa. L'esempio seguente spiega come analizzare n caratteri a partire da una posizione particolare.

${string:position}

Estrai sottostringa da $stringa in $posizione

${string:position:length}

Estrai $lunghezza di caratteri sottostringa da $stringa a partire da $posizione. Nell'esempio seguente, la prima istruzione echo restituisce la sottostringa a partire dalla 15a posizione. La seconda istruzione echo restituisce i 4 caratteri a partire dalla 15a posizione. La lunghezza deve essere il numero maggiore o uguale a zero.

$ cat substr.sh
#! /bin/bash

var="Welcome to the geekstuff"

echo ${var:15}
echo ${var:15:4}

$ ./substr.sh
geekstuff
geek

Inoltre, fai riferimento al nostro articolo precedente per saperne di più sui parametri speciali di $*, $@, $#, $$, $!, $?, $-, $_ bash.

3. Corrispondenza sottostringa più breve

La seguente sintassi elimina la corrispondenza più breve di $sottostringa davanti a $stringa

${string#substring}

La seguente sintassi elimina la corrispondenza più breve di $sottostringa dal retro di $stringa

${string%substring}

Il seguente script di shell di esempio spiega i due concetti di corrispondenza delle sottostringhe più brevi sopra.

$ cat shortest.sh
#! /bin/bash

filename="bash.string.txt"

echo ${filename#*.}
echo ${filename%.*}

$ ./shortest.sh
After deletion of shortest match from front: string.txt
After deletion of shortest match from back: bash.string

Nella prima sottostringa dell'istruzione echo '*.' corrisponde ai caratteri e a un punto, e # si rimuove dalla parte anteriore della stringa, quindi rimuove la sottostringa "bash". dalla variabile chiamata nomefile. Nella seconda istruzione echo la sottostringa '.*' corrisponde alla sottostringa che inizia con il punto e % si spoglia dal retro della stringa, quindi elimina la sottostringa '.txt'

4. Corrispondenza sottostringa più lunga

La seguente sintassi elimina la corrispondenza più lunga di $sottostringa davanti a $stringa

${string##substring}

La seguente sintassi elimina la corrispondenza più lunga di $sottostringa dal retro di $stringa

${string%%substring}

Il seguente script di shell di esempio spiega i due concetti di corrispondenza delle sottostringhe più lunghi sopra.

$ cat longest.sh
#! /bin/bash

filename="bash.string.txt"

echo "After deletion of longest match from front:" ${filename##*.}
echo "After deletion of longest match from back:" ${filename%%.*}

$ ./longest.sh
After deletion of longest match from front: txt
After deletion of longest match from back: bash

Nell'esempio sopra, ##*. elimina la corrispondenza più lunga per '*.' che corrisponde a "bash.string". quindi dopo averlo rimosso, stampa il restante txt. E %%.* rimuove la corrispondenza più lunga per .* dal retro che corrisponde a ".string.txt", dopo lo striping restituisce "bash".

5. Trova e sostituisci valori di stringa all'interno di Bash Shell Script

Sostituisci solo la prima partita

${string/pattern/replacement}

Corrisponde al modello nella variabile $string e sostituisce solo la prima corrispondenza del modello con la sostituzione.

$ cat firstmatch.sh
#! /bin/bash

filename="bash.string.txt"

echo "After Replacement:" ${filename/str*./operations.}

$ ./firstmatch.sh
After Replacement: bash.operations.txt

Sostituisci tutte le partite

${string//pattern/replacement}

Sostituisce tutte le corrispondenze di pattern con sostituzione.

$ cat allmatch.sh
#! /bin/bash

filename="Path of the bash is /bin/bash"

echo "After Replacement:" ${filename//bash/sh}

$ ./allmatch.sh
After Replacement: Path of the sh is /bin/sh

Per quanto riguarda trova e sostituisci, fai riferimento ai nostri articoli precedenti:sed replacement examples e Vim trova e sostituisci.

Sostituisci inizio e fine

${string/#pattern/replacement}

La seguente sintassi viene sostituita con la stringa di sostituzione, solo quando il modello corrisponde all'inizio della $stringa.

${string/%pattern/replacement}

La seguente sintassi viene sostituita con la stringa di sostituzione, solo quando il modello corrisponde alla fine della $string data.

$ cat posmatch.sh
#! /bin/bash

filename="/root/admin/monitoring/process.sh"

echo "Replaced at the beginning:" ${filename/#\/root/\/tmp}
echo "Replaced at the end": ${filename/%.*/.ksh}

$ ./posmatch.sh
Replaced at the beginning: /tmp/admin/monitoring/process.sh
Replaced at the end: /root/admin/monitoring/process.ksh

Lettura consigliata

Bash 101 Hacks, di Ramesh Natarajan . Passo la maggior parte del mio tempo in ambiente Linux. Quindi, naturalmente sono un grande fan della riga di comando di Bash e degli script di shell. 15 anni fa, quando stavo lavorando su diverse versioni di *nix, scrivevo molto codice sulla shell C e sulla shell Korn. Negli anni successivi, quando ho iniziato a lavorare su Linux come amministratore di sistema, ho praticamente automatizzato ogni possibile attività utilizzando lo scripting della shell Bash. Sulla base della mia esperienza con Bash, ho scritto l'eBook Bash 101 Hacks che contiene 101 esempi pratici sia sulla riga di comando di Bash che sugli script di shell. Se stavi pensando di padroneggiare Bash, fatti un favore e leggi questo libro, che ti aiuterà a prendere il controllo della tua riga di comando di Bash e degli script della shell.


Linux
  1. Come trovare la lunghezza della corda in Bash [Suggerimento rapido]

  2. Come verificare se la stringa contiene una sottostringa in Bash

  3. Vi e Vim Editor:12 potenti esempi di ricerca e sostituzione

  4. Utilizzo di grep e sed per trovare e sostituire una stringa

  5. trova il testo corrispondente e sostituisci la riga successiva

Bash Scripting – Manipolazione di stringhe

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come trovare e sostituire testo, parola o stringa in un file

50 esempi semplici e utili di comando Trova in Linux

Sostituzione di una sottostringa con un'altra stringa in Bash

Come utilizzare Sed per trovare e sostituire una stringa in un file