Xóa ký tự được biết đến đầu tiên trong chuỗi bằng sed


12

Làm thế nào để xóa một ký tự được biết đến đầu tiên trong một chuỗi với sed?

Ví dụ: giả sử tôi muốn xóa ký tự đầu tiên (đó là @) trong chuỗi "@ ABCDEFG1234"

Tôi muốn sed xác minh xem "@" có tồn tại như là ký tự đầu tiên hay không. Nếu vậy, nó nên xóa nhân vật.

Câu trả lời:


10

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

^ có nghĩa là bắt đầu của chuỗi

@ char bạn biết

(.*) phần còn lại, bị bắt

sau đó khối bị bắt sẽ được thay thế thành đầu ra Xin lỗi, không thể kiểm tra nó vào lúc này, nhưng nên là một thứ như thế


18

Không cần phải nắm bắt và thay thế.

sed 's/^@//'

Điều này thay thế ký tự @khi lần đầu tiên ^trong chuỗi, không có gì. Do đó, xóa nó.


0

Bạn có thể làm điều này thay vào đó.

sed 's / ^ .//'

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

Thí dụ :

echo test123 | sed 's/^.//'
est123
echo test123 | sed 's/^..//'
st123

1
Câu hỏi cho biết, tôi muốn sed xác minh xem "@" có tồn tại như là ký tự đầu tiên hay không. Nếu vậy, nó sẽ xóa ký tự. Câu trả lời của bạn xóa ký tự đầu tiên của mỗi dòng cho dù đó là gì. Ví dụ: nếu một dòng chứa test123, có vẻ như OP muốn nó ở một mình.
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.