Dadurch werden alle Ziffern in eckigen Klammern durch Sternchen ersetzt:
sed 's/\[[0-9]*\]/\[*\]/g'
In meiner Datei möchte ich die Nummer ersetzen *
Beispiel:
data[0] ---> data[*]
Ich habe data[0]
zu data[127]
und will auch für die gesamte Datei zu tun. Also wie kann ich nur für nummer tun?
Ich habe es mit Befehl versucht
sed 's/[[0-9][0-9]]/[*]/g'
aber es funktioniert nicht richtig.
Also bitte führe mich.
Dadurch werden alle Ziffern in eckigen Klammern durch Sternchen ersetzt:
sed 's/\[[0-9]*\]/\[*\]/g'
Antwort: So können Sie Ihren vorläufigen SED-Ausdruck ändern ( sed 's/[[0-9][0-9]]/[*]/g'
):
sed -E 's/\[[0-9]]/[*]/g'
Erläuterung:
Entfernen Sie die erste eckige Klammer [
mit einem Backslash, \
da der Ausdruck mit einem Literal [
und nicht mit den Zeichen, die Sie in eckigen Klammern schreiben, übereinstimmt . Anschließende eckige Klammern müssen nicht entweichen.
Geben Sie an, wie viele Ziffern Sie zuordnen möchten: bedeutet jede natürliche Zahl, die mit
1
und bis beginnt 3
. Damit dies funktioniert, müssen Sie erweiterte reguläre Ausdrücke mit dem -E
Switch aktivieren (ohne dass Sie damit zufrieden sein könnten sed 's/\[[0-9]*]/[*]/g'
). Es sollte in Ihrem vorhanden sein sed
, laut man sed
:
Die Option -E wird seit Jahren von GNU sed unterstützt und ist jetzt in POSIX enthalten.
Perl-Alternative hier:
perl -pe 's/data\[\K\d+(?=])/*/g'