awk / sed in tất cả các chữ số trước khi ký hiệu khớp


0

Tôi có đầu vào với các dòng như thế này (đó là chuỗi CIGAR từ định dạng sam nhưng hiện tại nó không quan trọng):

123M76N55M4S
6M7N25M
32M488N

Và tôi muốn trích xuất tất cả các chữ số N và trước:

76N
7N
488N

Tôi đã thử lệnh này:

sed -r 's/^.*([0-9]+N).*$/\1/'

Nhưng tôi chỉ nhận được ở đầu ra chữ số cuối cùng. Làm thế nào tôi có thể có được tất cả các chữ số trước?

Câu trả lời:


1

Điều này sẽ đủ:

grep -o '[0-9]\+N'

Regex sed của bạn thất bại vì .*quá tham lam. Bạn phải chắc chắn rằng bạn không tiêu thụ bất kỳ chữ số nào:

sed -r 's/(.*[^0-9])?([0-9]+N).*/\2/'
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.