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?
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?
Antworten:
Dieser sedBefehl sollte den Trick machen. Der folgende Befehl überschreibt die Datei:
sed -i 's/^[^:]*:/:/' file
Entfernen Sie die Markierung, um nur die Ausgabe zu drucken -i. Entfernen Sie das -iFlag, und leiten Sie die Ausgabe um, um die Ausgabe in einer neuen Datei abzulegen:
sed 's/^[^:]*:/:/' file > new_file
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:
mytext="xAxBxAxBx"
echo ${mytext#*A} # will print: xBxAxBx
echo ${mytext##*A} # will print: xBx
echo ${mytext%B*} # will print: xAxBxAx
echo ${mytext%%B*} # will print: xAx
echo ${mytext%%C*} # will print: xAxBxAxBx
Im letzten Beispiel stimmt das Muster nicht überein, daher wird nichts abgeschnitten.
echo ${mytext#*:}:. Damit werden Zeilen wie (123)(434): hello::{apple,orange,mango}.und richtig behandelt 123434: hello::{apple,orange,mango}.
sedoderawk