Có phải grep
có khả năng cung cấp số dòng mà từ đó được chỉ định xuất hiện không?Tìm số dòng nơi một từ cụ thể xuất hiện với "grep"
Ngoài ra, bạn có thể sử dụng grep
để tìm kiếm một từ bắt đầu từ một số dòng nhất định xuống dưới?
Có phải grep
có khả năng cung cấp số dòng mà từ đó được chỉ định xuất hiện không?Tìm số dòng nơi một từ cụ thể xuất hiện với "grep"
Ngoài ra, bạn có thể sử dụng grep
để tìm kiếm một từ bắt đầu từ một số dòng nhất định xuống dưới?
Sử dụng grep -n
để nhận số dòng của đối sánh.
Tôi không nghĩ rằng có cách để bắt đầu một số dòng nhất định. Vì điều đó, hãy dùng sed. Ví dụ, để bắt đầu từ dòng 10 và in số dòng và dòng cho dòng phù hợp, sử dụng:
sed -n '10,$ { /regex/ { =; p; } }' file
Để có được chỉ số dòng, bạn có thể sử dụng
grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/'
Hoặc bạn chỉ đơn giản là có thể sử dụng sed:
sed -n '/regex/=' file
Kết hợp hai lệnh sed, bạn nhận được:
sed -n '10,$ { /regex/= }' file
Ok, vì vậy grep -n sẽ trả về dòng có chứa các từ VÀ số dòng. Có anyway để có được số dòng CHỈ? –
@OneTwoThree Xem chỉnh sửa của tôi. –
@OneTwoThree Điều đó có phù hợp với bạn không? –
Bạn có thể gọi tail +[line number] [file]
và ống nó để grep -n
trong đó cho thấy số dòng:
tail +[line number] [file] | grep -n /regex/
Vấn đề duy nhất với phương pháp này là số dòng báo cáo của grep -n
sẽ [line number] - 1
ít hơn số dòng thực tế trong [file]
.
Hoặc Bạn có thể sử dụng
grep -n . file1 |tail -LineNumberToStartWith|grep regEx
này sẽ chăm sóc đánh số các dòng trong tập tin
grep -n . file1
này sẽ in cuối cùng-LineNumberToStartWith
tail -LineNumberToStartWith
Và cuối cùng nó sẽ grep dòng mong muốn của bạn (trong đó sẽ bao gồm số dòng như trong tập tin orignal)
grep regEX
Tôi tin rằng điều này phù hợp hơn với [SuperUser] (http://superuser.com/). –
@dunsmoreb Tôi không đồng ý. 'grep' là công cụ của một lập trình viên nhiều như một công cụ người dùng quyền lực. –
Tôi sử dụng 'grep' mọi lúc. Nhưng điều này thực sự không phải là một câu hỏi liên quan đến lập trình. –