J'ai besoin de supprimer le texte d'une ligne avant le délimiteur.
Par exemple:
(123434): hello::{apple,orange,mango}.
Je dois supprimer le texte avant le premier :
. ie (123434)
.
Existe-t-il une commande sous Linux pour effectuer cette tâche?
command-line
text-processing
user80538
la source
la source
sed
ouawk
Réponses:
Cette
sed
commande devrait faire l'affaire. La commande suivante écrasera le fichier:Pour simplement imprimer la sortie, supprimez le
-i
drapeau. Pour placer la sortie dans un nouveau fichier, supprimez l'-i
indicateur et redirigez la sortie:la source
Vous pouvez utiliser
cut
:la source
Vous pouvez le faire avec une instruction Bash assez simple :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Cela s'imprimera
: hello::{apple,orange,mango}.
. Vous pouvez couper les préfixes et suffixes de la même manière. De plus, les définitions de préfixe et de suffixe peuvent contenir des caractères génériques.Couper le préfixe - jusqu'à la première correspondance générique du préfixe:
${variable#prefix}
Couper le préfixe - jusqu'à la dernière correspondance générique du préfixe:
${variable##prefix}
Couper le suffixe - jusqu'à la première correspondance générique du suffixe:
${variable%suffix}
Couper le suffixe - jusqu'à la dernière correspondance générique du suffixe:
${variable%%suffix}
Cela peut sembler peu clair à première vue, voir l'exemple suivant:
Dans le dernier exemple, le motif ne correspond pas, donc rien n'est coupé.
la source
echo ${mytext#*:}:
. Cela gérera correctement les lignes comme(123)(434): hello::{apple,orange,mango}.
et123434: hello::{apple,orange,mango}
.