Shell Script - (Löschen eines Substrings)

7

Ich habe Strings namens:

%Vor%

Wie lösche ich die Teilzeichenfolge

?
  

.out

In diesen Zeichenfolgen?

Welchen Befehl soll ich verwenden? (Bourne Shell)

    
J0natthaaann 26.11.2012, 17:49
quelle

5 Antworten

13

Wenn diese Zeichenfolgen in einer Datei gespeichert sind (nennen wir sie input_file ):

%Vor%

Sie können:

%Vor%

Dadurch wird jedes Vorkommen der Teilzeichenfolge .out aus dieser Datei entfernt.

Erläuterung:

  • sed : Rufen Sie das sed -Tool zum Bearbeiten von Textströmen auf
  • -i : Verwenden Sie die Option "In-Place" - dies ändert die von Ihnen angegebene Eingabedatei, anstatt die Ausgabe in stdout zu schreiben.
  • 's/\.out//g' : Verwenden Sie regulären Ausdruck, um .out zu löschen. Das g am Ende bedeutet, dass alle Vorkommen gelöscht werden.
  • input_file : Spezifizieren Sie die Eingabedatei

Wenn diese Zeichenfolgen in Variablen gespeichert sind:

%Vor%

Sie können Parameter ersetzen :

verwenden %Vor%

Erläuterung:

  • Von dem obigen Link: "$ {var% Pattern} Entferne von $ var den kürzesten Teil von $ Pattern, der mit dem Backend von $ var übereinstimmt."
  • Beachten Sie, dass das hier erwähnte "Muster" Globbing genannt wird, das anders als regulärer Ausdruck in wichtigen Punkten ist.
sampson-chen 26.11.2012 17:52
quelle
11

Mehrere Möglichkeiten, eine Auswahl:

str=abc.out

Shell:

%Vor%

Grep:

%Vor%

Sed:

%Vor%

Awk:

%Vor%

Ausschneiden:

echo $str | cut -d. -f1

Alle Ausgaben:

%Vor%     
Chris Seymour 26.11.2012 17:55
quelle
4
%Vor%

Um das kürzeste Suffix zu löschen, verwenden Sie im Allgemeinen:

%Vor%

Um das längste Suffix zu löschen, verwenden Sie

%Vor%     
William Pursell 26.11.2012 17:52
quelle
1

Wenn dies Dateinamen sind, können Sie basename verwenden.

%Vor%

gibt Ihnen:

%Vor%     
sureshvv 26.11.2012 17:57
quelle
1

Ich fand das am besten, weil das Muster, das Sie verwenden möchten, in einer Variablen sein kann:

%Vor%

Das Ergebnis ist:

abc

    
Robin Zimmermann 07.09.2017 20:10
quelle

Tags und Links