Devo eliminare il testo da una riga prima del delimitatore.
Per esempio:
(123434): hello::{apple,orange,mango}.
Devo prima cancellare il testo :
. vale a dire (123434)
.
Esiste un comando in Linux per eseguire questa attività?
Devo eliminare il testo da una riga prima del delimitatore.
Per esempio:
(123434): hello::{apple,orange,mango}.
Devo prima cancellare il testo :
. vale a dire (123434)
.
Esiste un comando in Linux per eseguire questa attività?
Risposte:
Questo sed
comando dovrebbe fare il trucco. Il seguente comando sovrascriverà il file:
sed -i 's/^[^:]*:/:/' file
Per stampare solo l'output, rimuovere il -i
flag. Per inserire l'output in un nuovo file, rimuovere il -i
flag e reindirizzare l'output:
sed 's/^[^:]*:/:/' file > new_file
Puoi farlo con un'istruzione Bash abbastanza semplice :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Questo stamperà : hello::{apple,orange,mango}.
. Puoi tagliare prefissi e suffissi in modo simile. Inoltre, le definizioni di prefisso e suffisso possono contenere caratteri jolly.
Taglia prefisso - fino al primo prefisso corrispondenza jolly: ${variable#prefix}
Taglia prefisso: corrispondenza jolly fino all'ultimo prefisso: ${variable##prefix}
Cut suffix - fino alla prima corrispondenza jolly del suffisso: ${variable%suffix}
Taglia suffisso: corrispondenza jolly fino all'ultimo suffisso: ${variable%%suffix}
A prima vista potrebbe sembrare poco chiaro, vedere il seguente esempio:
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
Nell'ultimo esempio, il modello non corrisponde, quindi nulla viene tagliato.
echo ${mytext#*:}:
. Questo gestirà correttamente le linee come (123)(434): hello::{apple,orange,mango}.
e 123434: hello::{apple,orange,mango}
.
sed
oawk