So löschen Sie einen Teilstring mit shell-Skript
Habe ich strings genannt:
abc.out
def.out
Wie lösche ich die substring -
.aus
In diese strings?
Welchen Befehl soll ich benutzen?
(Bourne-Shell)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrere Möglichkeiten, eine Auswahl:
str=abc.out
Shell:
Grep:
Sed:
Awk:
Schnitt:
echo $str | cut -d. -f1
Alle Ausgabe:
Wenn diese strings in einer Datei gespeichert sind (nennen wir es
input_file
):Können Sie tun:
Und dies wird entfernen Sie alle vorkommen des Teilstrings
.out
aus dieser Datei.Erklärung:
sed
: aufrufen des sed Werkzeug zum Bearbeiten der streams von text-i
: verwenden Sie die "in-place" - option - dies ändert die Eingabedatei, die Sie statt der Ausgabe aufstdout
's/\.out//g'
: Regulären Ausdruck verwenden, um zu löschen.out
. dieg
am Ende bedeutet löschen Sie alle vorkommen.input_file
: geben Sie in der input-DateiWenn diese Zeichenketten werden in Variablen gespeichert:
Können Sie parameter Weise substituiert:
Erklärung:
g
Flagge ist wohl unerwünscht.Im Allgemeinen, löschen Sie den kürzesten suffix verwenden:
Löschen das längste suffix, verwenden Sie
Fand ich das funktionierte am besten, weil das Muster, das Sie verwenden möchten, können Sie in einer Variablen:
Ist das Ergebnis:
abc
Wenn diese Dateinamen, die Sie verwenden können, basename.
geben Sie:
basename -s .out a.out
funktioniert auch, wenn Sie mögen, schreiben Sie Ihre Optionen.