Tôi muốn grep smb.conf
và chỉ xem những dòng không được bình luận.
Tôi muốn grep smb.conf
và chỉ xem những dòng không được bình luận.
Câu trả lời:
grep "^[^#;]" smb.conf
Đầu tiên ^
đề cập đến phần đầu của dòng, vì vậy các dòng có nhận xét bắt đầu sau ký tự đầu tiên sẽ không được loại trừ. [^#;]
có nghĩa là bất kỳ nhân vật nào không #
hoặc ;
.
Nói cách khác, nó báo cáo các dòng bắt đầu bằng bất kỳ ký tự nào khác ngoài #
và ;
. Nó không giống như báo cáo các dòng không bắt đầu #
và ;
(mà bạn sử dụng grep -v '^[#;]'
) ở chỗ nó cũng loại trừ các dòng trống , nhưng có lẽ tốt hơn trong trường hợp này vì tôi nghi ngờ bạn quan tâm đến các dòng trống.
Nếu bạn muốn bỏ qua các ký tự trống hàng đầu, bạn có thể thay đổi nó thành:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
hoặc là
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Hoặc là
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Nhưng dù sao cũng cảm ơn bạn
cat ...|
cú pháp!. .2 Để đánh dấu các dòng trống VÀ các dòng chỉ chứa khoảng trắng, có thể với các nhận xét U có thể sử dụng điều này:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implie chạy hai nhị phân thông qua fifo , trong khi grep "blah" <file
thực hiện chính xác và liên kết tự file
nhiên với grep's STDIN
. [bash] con mèo vô dụng là một chủ đề tìm kiếm đầy đủ tính năng thông qua bất kỳ công cụ tìm kiếm nào! -> blog.sanctum.geek.nz/usless-use-of-cat ... để lấy mẫu
Giải pháp Vim:
:v/^\s*[#\n]/p
Tôi tình cờ gặp câu hỏi này khi cố gắng tự tìm giải pháp vim.
*
thành +
như sau:v/^\s+[#\n]/p
Đường ống đến grep trong câu trả lời của oliver nadj có thể được loại bỏ bằng cách (giả sử GNU grep
hoặc tương thích):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
đó là những gì làm việc cho tôi bỏ qua các dòng nhận xét hoặc trống, thậm chí khoảng trắng trước dấu băm hoặc dấu chấm phẩy
Những ví dụ này có thể được sử dụng cho mọi người.
[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char
# Line 2 is a comment with hash symbol as second char
# Line 3 is a comment with hash symbol as third char
# Line 4 is a comment with tab first, then hash
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
Ví dụ grep đầu tiên loại trừ các dòng bắt đầu với bất kỳ khoảng trắng nào theo sau là ký hiệu băm.
[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
Thứ hai loại trừ các dòng bắt đầu với bất kỳ khoảng trắng nào theo sau là ký hiệu băm hoặc dấu chấm phẩy.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Ở đây tôi có một cái tốt hơn (giả sử GNU grep
hoặc tương thích):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
loại trừ các dòng bắt đầu bằng #;/%<
dấu ngoặc vuông và bộ lọc thứ hai sau đường ống \s*$
dành cho các dòng trống.
<
hoặc /
được sử dụng cho ý kiến? Tôi biết rất nhiều định dạng tập tin conf trong đó <
là tất cả mọi thứ trừ một bình luận. !
đôi khi được sử dụng như trong các tệp tài nguyên X.
grep -v '^$\|^\s*#' temp
Điều này tốt hơn rất nhiều, tôi đã nhận được nó từ https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-USE-grep-sed
Nó giả định GNU grep
hoặc tương thích.
;
một bình luận nên được loại bỏ.
egrep -v "^#|^$" anyfile.txt
Lệnh này là để grep tất cả thông tin trong tệp không bao gồm các bình luận và các dòng trống.
;
Điều này sẽ hiển thị cho bạn tệp mà không có những dòng bắt đầu bằng #
:
grep -v "^#" filename
;
.
testparm
làm điều này tốt hơn vì điều này cũng hiển thị các giá trị mặc định.