Sử dụng sed, làm thế nào để bạn in các ký tự 'N' đầu tiên của một dòng?


110

Sử dụng sedmột lớp lót để in n ký tự đầu tiên là gì? Tôi đang làm như sau:

grep -G 'defn -test.*' OctaneFullTest.clj  | sed ....

Câu trả lời:


209

Không sử dụng sed, sử dụng cut:

grep .... | cut -c 1-N

Nếu bạn PHẢI sử dụng sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'

2
Trên thực tế trên một hệ thống Cygwin mà tôi đang làm việc bây giờ cutkhông cắt giảm nó trong khi sedđó.
kqw

Hoặc thậm chí sed -r 's/^(.{12}).*/\1/'.
fedorqui 'VẬY đừng làm hại nữa'

1
@fedorqui -rrõ ràng có sẵn trên Linux, nhưng không có trên Mac.
Paul Tomblin

Chính xác, nó không có sẵn trên OSX.
fedorqui 'VẬY đừng làm hại nữa'

1
FYI: cut -c 1-N(trong đó N là một số) không làm việc trên cài đặt Cygwin của tôi (Cygwin v 2.6, cắt v 8,25..) Trên OS X, sử dụng sed -Ehơn sed -r, được sử dụng ở những nơi khác.
wrlee

45
colrm x

Ví dụ: nếu bạn cần 100 ký tự đầu tiên:

cat file |colrm 101 

Nó đã tồn tại trong nhiều năm và có trong hầu hết các Linux và bsd (chắc chắn là freebsd), thường là theo mặc định. Tôi không thể nhớ đã bao giờ phải gõ apt-get install colrm.


Điều này không cung cấp 50n ký tự đầu tiên. Nó cung cấp cho các nhân vật n cho mỗi dòng văn bản
bsmoo

colrmhiểu utf8.
Skippy le Grand Gourou

9

cũng không cần phải sử dụng grep

một ví dụ:

sed -n '/searchwords/{s/^\(.\{12\}\).*/\1/g;p}' file


4

Để in N ký tự đầu tiên, bạn có thể xóa N + 1 ký tự cho đến cuối dòng:

$ sed 's/.//5g' <<< "defn-test"
defn

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.