Ich muss Text aus einer Zeile vor dem Trennzeichen löschen.
Beispielsweise:
(123434): hello::{apple,orange,mango}.
Ich muss zuerst den Text löschen :
. dh (123434)
.
Gibt es unter Linux einen Befehl, um diese Aufgabe auszuführen?
command-line
text-processing
user80538
quelle
quelle
sed
oderawk
Antworten:
Dieser
sed
Befehl sollte den Trick machen. Der folgende Befehl überschreibt die Datei:Entfernen Sie die Markierung, um nur die Ausgabe zu drucken
-i
. Entfernen Sie das-i
Flag, und leiten Sie die Ausgabe um, um die Ausgabe in einer neuen Datei abzulegen:quelle
Sie können verwenden
cut
:quelle
Sie können dies mit einer recht einfachen Bash- Anweisung tun :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Dies wird gedruckt
: hello::{apple,orange,mango}.
. Sie können Präfixe und Suffixe auf ähnliche Weise schneiden. Außerdem können Präfix- und Suffixdefinitionen Platzhalter enthalten.Präfix ausschneiden - bis zum ersten übereinstimmenden Präfix-Platzhalter:
${variable#prefix}
Präfix ausschneiden - bis zum letzten übereinstimmenden Präfix-Platzhalter:
${variable##prefix}
Suffix ausschneiden - bis zur ersten Übereinstimmung mit Suffix-Platzhaltern:
${variable%suffix}
Suffix ausschneiden - bis zur letzten Übereinstimmung mit Suffix-Platzhaltern:
${variable%%suffix}
Es mag auf den ersten Blick unklar aussehen, siehe folgendes Beispiel:
Im letzten Beispiel stimmt das Muster nicht überein, daher wird nichts abgeschnitten.
quelle
echo ${mytext#*:}:
. Damit werden Zeilen wie(123)(434): hello::{apple,orange,mango}.
und richtig behandelt123434: hello::{apple,orange,mango}
.