GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Entfernen von einfachen und doppelten Anführungszeichen in einer Zeichenfolge nur mit Bash / Standard-Linux-Befehlen

Das sollte es tun:

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

Wo in.txt ist:

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

Und erwartet.txt ist:

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

Sie können überprüfen, ob sie übereinstimmen mit:

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

Sie könnten tr verwenden :

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

... funktioniert auch, jedoch ist 'tr' bekanntermaßen problematisch bei viel älteren (etwa Redhat 9-ish) Distributionen. tr ist eine Abkürzung für „übersetzen“, die häufig in Pipes verwendet wird, um Eingaben umzuwandeln. Die -d Option bedeutet einfach „löschen“.

Die meisten modernen Versionen enthalten auch vordefinierte Makros, um obere in untere, untere in obere umzuwandeln, Leerzeichen zu entfernen usw. Wenn Sie es also verwenden, nehmen Sie sich eine Sekunde Zeit, um zu sehen, was es sonst noch tut (siehe Hilfeausgabe / Manpage), ist praktisch.


VAR="'FOOD'"

VAR=$(eval echo $VAR)

Erklärung:Da Anführungszeichen bereits von der Shell verstanden werden, können Sie die Shell bitten, einen Befehl auszuwerten, der nur die Zeichenfolge in Anführungszeichen zurückgibt, genauso wie Sie es tun, wenn Sie ihn selbst eingeben.

Hier, eval echo $VAR erweitert sich zu eval echo 'FOOD' weil die Anführungszeichen tatsächlich Teil des Werts von VAR sind . Wenn Sie echo 'FOOD' ausführen würden in die Shell würde man FOOD bekommen (ohne die Anführungszeichen). Das ist eval tut:es nimmt seine Eingabe und führt sie wie einen Shell-Befehl aus.

⚠CODE-INJEKTION!

eval Skripte der Code-Injektion aussetzen.

VAR=';ls -l'

VAR=$(eval echo $VAR)

führt zur Ausführung von ls -l .

Hier könnten viel schädlichere Codes eingeschleust werden.


Linux
  1. So übertragen Sie Dateien zwischen zwei Computern mit den Befehlen nc und pv

  2. Linux-Befehle – Übersicht und Beispiele

  3. Überprüfen Sie den Speicherplatz in Linux mit den Befehlen df und du

  4. Linux-Befehle:jobs, bg und fg

  5. Einen String mit einfachen Anführungszeichen und anderen Sonderzeichen drucken?

So zeichnen Sie Linux-Terminalsitzungen mit den Befehlen „script“ und „scriptreplay“ auf und geben sie wieder

So führen Sie Befehle von der Standardeingabe mit Tee und Xargs in Linux aus

So verwenden Sie bash if -z und if -n zum Testen von Zeichenfolgen in Linux

Suchen, studieren und üben Sie Linux-Befehle im Handumdrehen mit Tldr++

Unterschied zwischen einfachen und doppelten Anführungszeichen in Bash Shell

Verwenden von random zum Generieren einer zufälligen Zeichenfolge in Bash