Sınırlayıcıdan önce bir satırdaki metni silmem gerekiyor.
Örneğin:
(123434): hello::{apple,orange,mango}.
Önce metni silmem gerekiyor :
. yani (123434)
.
Linux'ta bu görevi gerçekleştirmek için herhangi bir komut var mı?
Sınırlayıcıdan önce bir satırdaki metni silmem gerekiyor.
Örneğin:
(123434): hello::{apple,orange,mango}.
Önce metni silmem gerekiyor :
. yani (123434)
.
Linux'ta bu görevi gerçekleştirmek için herhangi bir komut var mı?
Yanıtlar:
Bu sed
komut hile yapmalı. Aşağıdaki komut dosyanın üzerine yazacaktır:
sed -i 's/^[^:]*:/:/' file
Yalnızca çıktıyı yazdırmak için -i
bayrağı kaldırın . Çıktıyı yeni bir dosyaya koymak için -i
bayrağı kaldırın ve çıktıyı yeniden yönlendirin:
sed 's/^[^:]*:/:/' file > new_file
Bunu oldukça basit bir Bash talimatıyla yapabilirsiniz:
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Bu yazdırılacaktır : hello::{apple,orange,mango}.
. Ön ekleri ve son ekleri benzer şekilde kesebilirsiniz. Ayrıca, önek ve sonek tanımları joker karakterler içerebilir.
Kesme öneki - ilk önek joker karakter eşleşmesine kadar: ${variable#prefix}
Kesme öneki - son önek joker karakter eşleşmesine kadar: ${variable##prefix}
Son eki kes - ilk son ek joker eşleşmesine kadar: ${variable%suffix}
Son eki kes - son eke kadar joker karakter eşleşmesi: ${variable%%suffix}
İlk bakışta belirsiz görünebilir, aşağıdaki örneğe bakın:
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
Son örnekte, desen eşleşmediğinden hiçbir şey kesilmiyor.
echo ${mytext#*:}:
. Bu, (123)(434): hello::{apple,orange,mango}.
ve gibi satırları düzgün bir şekilde işleyecektir 123434: hello::{apple,orange,mango}
.
sed
ya daawk