Wie entferne ich in Unix ein Zeichen aus einer Zeichenfolge?

Wie entferne ich in Unix ein Zeichen aus einer Zeichenfolge?

Ich habe zwei Saiten wie diese.
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
Ich möchte zwei Saiten wie
a= 20180911183706376476
b= 20180911183706376446

Kann mir bitte jemand helfen?

Antwort1

Wenn Ihre Shell "//"-Ersetzungen in Variablen unterstützt, können Sie verwenden

a=${a//[]:[-]/}

[...](Beachten Sie, dass „-“ im Bereichsausdruck an letzter Stelle und „]“ an erster Stelle stehen sollte .

Wenn nicht, können Sie so etwas verwenden:

set_trim(){ local IFS=[:-]; v=$1; set -- $2; IFS=; eval "$v=$*"; }
set_trim a "$a"
set_trim b "$b"

oder mit sed(weniger effizient, da ein externes Programm gestartet werden muss):

a=`echo $a | sed 's/[]:[-]//g'`

verwandte Informationen