Lưu trữ đầu ra grep với định dạng như một tệp


2

Tôi muốn lưu trữ kết quả của grep trong một tệp có định dạng giống như đầu ra trong Konsole (Kubfox). Tôi đã cố lưu nó trong tài liệu LibreOffice nhưng kết quả không khác gì kết quả trong tệp văn bản. Làm thế nào để tôi lưu trữ kết quả trong tệp với định dạng? Tôi có nghĩa là làm thế nào để tôi lưu trữ kết quả với đầu ra màu?

Câu trả lời:


1

Để giữ màu, sử dụng --color=always

grep --color=always "pattern" file.txt > newfile.txt

Từ trang người đàn ông:

--color[=WHEN], --colour[=WHEN]
      Surround the matched (non-empty) strings, matching lines, context  lines,  file  names,
      line  numbers,  byte  offsets,  and separators (for fields and groups of context lines)
      with escape sequences to display them in color on the terminal.  The colors are defined
      by   the   environment  variable  GREP_COLORS.   The  deprecated  environment  variable
      GREP_COLOR is still supported, but its setting does not have priority.  WHEN is  never,
      always, or auto.

Điều này đã không làm việc. Khi tôi mở tập tin, tôi nhận được đầu ra không được định dạng. Chỉ khi tôi sử dụng cattôi mới có được đầu ra mà tôi muốn. Đó không phải là điều tôi muốn làm.
Parth Shah

@ParthShah: Bạn thực sự đọc / xem tập tin của bạn như thế nào? Bạn sẽ thấy rằng ở trên lưu trữ đầu ra được định dạng chính xác như bạn mô tả (chú ý cách khi bạn cattập tin của bạn, nó in đầu ra được định dạng vào thiết bị đầu cuối của bạn). Chương trình bạn đang sử dụng để đọc / xem tệp của mình có thể thay đổi định dạng của tệp hoặc không thể hiểu đơn giản về nó.
Steve

grep -rn --color=always pattern * > temp.docSau đó, tôi sử dụng Libre Office 3 để mở tài liệu của mình. Tôi cho rằng Libre Office 3 không thể hiểu định dạng. Tôi có thể sử dụng ứng dụng nào để xem đầu ra?
Parth Shah

@ParthShah: Tôi sử dụng vim để thực hiện tất cả các chỉnh sửa tệp của mình. Thật không may, tôi đã không tìm được cách để vim dễ dàng "vượt qua" tất cả các mã thoát tạo nên định dạng. Tuy nhiên, tôi đã tìm thấy tập lệnh này có thể phân tích mã thoát và sử dụng tô sáng cú pháp vim để tạo lại mã màu trong đầu ra. Theo mô tả của nó, nó sẽ làm chính xác những gì bạn muốn (nhưng tôi chưa thử nghiệm nó). Nếu bạn chỉ muốn xem các tệp của mình, bạn có thể cuộn qua chúng bằng cách sử dụng:less -R newfile.txt
Steve


1

Theo mặc định, greptắt định dạng màu khi đường ống hoặc chuyển hướng. Bạn có thể buộc nó cung cấp đầu ra có định dạng màu với --color=alwaystùy chọn:

grep --color=always "pattern" infile > outfile

Thông tin màu sắc sẽ hiển thị dưới dạng một loạt các ký tự thoát. Trong trường hợp bạn muốn loại bỏ các ký tự thoát sau này, đây là một lệnh shell tiện lợi sedđể làm việc đó:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

(Lưu ý, trên OS X, sử dụng sed -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")


sedhiển thị đầu ra trên vỏ. Khi tôi sao chép nó vào tập tin, văn bản được hiển thị mà không có ký tự thoát. Tôi đoán không thể làm những gì tôi muốn làm bằng cách sử dụnggrep
Parth Shah
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.