GNU/Linux >> Tutoriels Linux >  >> Linux

Suppression des guillemets simples et doubles dans une chaîne à l'aide des commandes Linux bash / standard uniquement

Cela devrait le faire :

sed "s/^\([\"']\)\(.*\)\1\$/\2/g" in.txt

Où in.txt est :

"Fo'od'
'Food'
"Food"
"Fo"od'
Food
'Food"
"Food'
'Fo'od'
"Fo'od"
Fo'od
'Fo"od'
"Fo"od"
Fo"od

Et le fichier attendu.txt est :

"Fo'od'
Food
Food
"Fo"od'
Food
'Food"
"Food'
Fo'od
Fo'od
Fo'od
Fo"od
Fo"od
Fo"od

Vous pouvez vérifier qu'ils correspondent à :

diff -s <(sed "s/^\([\"']\)\(.*\)\1\$/\2/g" in.txt) expected.txt

Vous pouvez utiliser tr :

echo "$string" | tr -d 'chars to delete' 

... fonctionne également, mais 'tr' est connu pour être problématique sur des distributions beaucoup plus anciennes (environ Redhat 9-ish). tr est une abréviation de 'translate', couramment utilisée dans les pipes pour transformer l'entrée. Le -d option signifie simplement "supprimer".

La plupart des versions modernes contiennent également des macros prédéfinies pour transformer le haut en bas, le bas en haut, supprimer les espaces blancs, etc. est pratique.


VAR="'FOOD'"

VAR=$(eval echo $VAR)

Explication :puisque les guillemets sont déjà compris par le shell, vous pouvez demander au shell d'évaluer une commande qui fait juste écho à la chaîne entre guillemets, de la même manière qu'il le fait lorsque vous la tapez vous-même.

Ici, eval echo $VAR se développe en eval echo 'FOOD' car les guillemets font en fait partie de la valeur de VAR . Si vous deviez exécuter echo 'FOOD' dans le shell, vous obtiendrez FOOD (sans les guillemets). C'est ce que eval fait :il prend son entrée et l'exécute comme une commande shell.

⚠INJECTION DE CODE !

eval exposer les scripts à l'injection de code.

VAR=';ls -l'

VAR=$(eval echo $VAR)

provoquera l'exécution de ls -l .

Des codes beaucoup plus dangereux pourraient être injectés ici.


Linux
  1. Commandes Linux - Présentation et exemples

  2. Vérifier l'espace disque sous Linux à l'aide des commandes df et du

  3. Commandes Linux :jobs, bg et fg

  4. Utilisation de la commande Linux Sleep dans les scripts Bash

  5. Comment définir la priorité des processus Linux à l'aide des commandes nice et renice

Comment enregistrer et rejouer des sessions de terminal Linux à l'aide des commandes "script" et "scriptreplay"

Comment transférer des fichiers entre deux ordinateurs à l'aide des commandes nc et pv

Comment exécuter des commandes à partir d'une entrée standard à l'aide de Tee et Xargs sous Linux

Comment utiliser bash if -z et if -n pour tester des chaînes sous Linux

Recherchez, étudiez et pratiquez les commandes Linux à la volée à l'aide de Tldr++

Différence entre les guillemets simples et doubles dans Bash Shell