Trong Linux, làm cách nào để cắt bớt đầu ra dòng lệnh?


56

Nếu tôi grep -nr sumthin *trong thư mục mã nguồn của mình, nó cũng sẽ xuất hiện các dòng rất dài từ các tệp JavaScript hoặc CSS được rút gọn. Tôi muốn chỉ nhận được 80 ký tự đầu tiên trên mỗi dòng.

Ví dụ, một thường xuyên grepcho tôi điều này:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

nhưng tôi muốn nhận được điều này thay vào đó:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

Lệnh Linux nào có thể làm điều này?


"Giảm thiểu"? Điều đó nghĩa là gì?
CarlF


Cảm ơn. Liên kết chính xác là en.wikipedia.org/wiki/Minification_%28programming%29
CarlF

Cả hai liên kết dẫn đến cùng một trang cho tôi.
Victor

Câu trả lời:


80

OMG, tôi hoàn toàn quên mất cut!

grep -nr sumthin * | cut -c -80

^ lừa > _ <


4
Điều đó không hoạt động nếu các chuỗi thoát hoặc mã màu có liên quan; lấy ví dụgit log --oneline --graph --color=always | cut -c -$COLUMNS
badp

1
Tôi hiểu rằng nó không cắt ngắn ở đúng 80 ký tự được hiển thị, nhưng nó vẫn giải quyết được vấn đề của tôi: không có dòng nào được bọc, vì vậy bạn vẫn chỉ thấy phần đầu của mỗi dòng (rất quan trọng trong trường hợp sử dụng cụ thể của tôi, vì vậy tôi có thể thấy <file>:<linenumber>đầu ra của grep -n).
Nikki Erwin Ramirez

1
Nhận xét cam kết dài cũng "phá vỡ" đầu ra của lệnh mẫu của bạn, nếu không bị cắt ngắn. git log --oneline --graph --color=always | moresẽ hiển thị biểu đồ bị gián đoạn bởi văn bản được bọc. i.imgur.com/X8G7SIV.png
Nikki Erwin Ramirez

vâng, đó là lý do tại sao tôi bắt đầu câu hỏi này để bắt đầu với :)
badp

5
Nếu mục đích chỉ là để có thể nhìn rõ mọi thứ (không chuyển hướng đầu ra ở đâu đó để sử dụng) thì đó less -Slà những gì bạn muốn. -S--chop-long-lines. Về cơ bản, nó tắt ngắt dòng
entropy

5

Khác với cutbạn có thể sử dụng fold(và trong một số trường hợp fmt).
foldlà một phần của coreutilsgói.

$ echo "some very long long long text" | fold -w 5   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

foldkhông cắt văn bản còn lại, nhưng xuất nó trên dòng tiếp theo.


Cảm ơn vì điều này, điều này có thể hữu ích trong tương lai. Trong trường hợp của tôi, tôi thực sự muốn cắt văn bản, vì vậy file:linenumbertiền tố của grepđầu ra là liền kề, để dễ dàng quét bằng mắt.
Nikki Erwin Ramirez

1

Mặc dù không chính xác những gì bạn muốn làm, bạn có thể sử dụng awkđể in một số cột nhất định. Bạn có thể chỉ định dấu phân cách là ":" trong trường hợp này.


Không có một dấu phân cách cụ thể, mặc dù. Tôi thực sự cắt đầu ra ở một độ dài cụ thể, để làm cho nó khớp với 1 dòng trong thiết bị đầu cuối.
Nikki Erwin Ramirez

@Nikki sau đó cắt là những gì bạn muốn. Tôi chắc chắn rằng bạn có thể làm điều gì đó thông minh với awk để có được điều tương tự nhưng thực sự, cắt dễ dàng hơn. ^ _-
Sardathrion
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.