J'ai besoin de supprimer du texte d'une ligne avant le délimiteur.
Par exemple:
(123434): hello::{Apple,orange,mango}.
J'ai besoin de supprimer le texte avant le premier :
. c'est à dire. (123434)
.
Y a-t-il une commande sous Linux d'exécuter cette tâche?
Cette commande sed
devrait faire le tour. La commande suivante écrasera le fichier:
sed -i 's/^[^:]*:/:/' file
Pour simplement imprimer la sortie, supprimez le -i
drapeau. Pour mettre la sortie dans un nouveau fichier, supprimez le -i
Drapeau et rediriger la sortie:
sed 's/^[^:]*:/:/' file > new_file
Vous pouvez utiliser cut
:
echo '(123434): hello::{Apple,orange,mango}.' | cut -d: -f2-
Vous pouvez le faire avec une instruction assez simple Bash:
mytext="(123434): hello::{Apple,orange,mango}."
echo ${mytext#*)}
Cela imprimera : hello::{Apple,orange,mango}.
. Vous pouvez réduire les préfixes et les suffixes de la même manière. De plus, les définitions de préfixes et de suffixes peuvent contenir des caractères génériques.
Couper le préfixe - Jusqu'à un premier match de caractères génériques préfixe: ${variable#prefix}
Couper le préfixe - Jusqu'au dernier préfixe Correspondance générique: ${variable##prefix}
CUT suffixe - Jusqu'au premier suffixe Suffix Wildcard Match: ${variable%suffix}
Cut suffixe - jusqu'à la dernière combinaison de Suffix Wildcard: ${variable%%suffix}
On n'aura peut-être pas peur de la première vue, voir l'exemple suivant:
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
Dans le dernier exemple, le motif ne correspond pas, alors rien n'est coupé.