Hapus karakter yang diketahui pertama dalam string dengan sed

12

Bagaimana cara seseorang menghapus karakter yang diketahui pertama dalam string dengan sed?

Misalnya, katakan saya ingin menghapus karakter pertama (yaitu @) dalam string "@ ABCDEFG1234"

Saya ingin memverifikasi apakah "@" ada sebagai karakter pertama. Jika demikian, itu harus menghapus karakter.

yael
sumber

Jawaban:

10

sed 's/^@\(.*\)/\1/'

^ berarti awal dari string

@ char kamu dikenal

(.*) sisanya, ditangkap

maka blok yang ditangkap akan diganti untuk output Maaf, tidak dapat mengujinya saat ini, tetapi harus seperti itu

Pablo
sumber
18

Tidak perlu untuk menangkap dan mengganti.

sed 's/^@//'

Ini menggantikan karakter @ketika pertama kali ^dalam string, tanpa apa-apa. Jadi, hapus saja.

johnny
sumber
0

Anda bisa melakukan ini sebagai gantinya.

sed 's /^.//'

^ - Starting character 
. - No of charactes(.. means two characters)

Contoh:

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123
Prakaash Ravi Chandran
sumber
1
Pertanyaannya mengatakan "Saya ingin sed memverifikasi apakah" @ "ada sebagai karakter pertama. Jika demikian, itu harus menghapus karakter. " Jawaban Anda menghapus karakter pertama dari setiap baris, apa pun itu. Misalnya, jika sebuah baris berisi test123, sepertinya OP menginginkannya dibiarkan sendiri.
Scott