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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.