2010-07-14 25 views
61

Tôi là một công cụ grep-type để tìm kiếm các chuỗi thuần túy. Tôi đang tìm sự xuất hiện của một dòng của một tệp nhật ký, như là một phần của một dòng trong một tệp nhật ký riêng biệt. Văn bản tìm kiếm có thể chứa tất cả các loại ký tự đặc biệt regex, ví dụ: []().*^$-\.Grep cho các chuỗi chữ

Có tiện ích tìm kiếm Unix nào không sử dụng regex không, nhưng chỉ tìm kiếm các lần xuất hiện bằng chữ của một chuỗi?

+0

Wonder lý do tại sao các câu hỏi không phải là _ "Tôi có thể thực hiện tìm kiếm' grep' cho chuỗi chữ? "_ thay vì _" Có cái gì đó giống như 'grep' có thể tìm kiếm chuỗi chữ?" _ Đầu vít phẳng có thể phù hợp với đầu vít của Philips, bạn biết ';)' – ADTC

Trả lời

88

Bạn có thể sử dụng grep cho điều đó, với tùy chọn -F.

-F, --fixed-strings  PATTERN is a set of newline-separated fixed strings 
+0

* "chuỗi cố định được phân tách bằng dòng mới" * Làm cách nào tôi có thể thực hiện điều này trên lời nhắc thiết bị đầu cuối? Tôi biết tôi có thể tạo một tệp mẫu, nhưng không có tệp, có thể thực hiện lời nhắc không? Nhấn Enter rõ ràng thực hiện lệnh. – ADTC

+3

* Tôi sẽ trả lời câu hỏi của riêng tôi. :) * Bạn chỉ cần cung cấp nhiều chuỗi cố định bằng cách lặp lại tùy chọn '-e'. Như thế này: 'grep -F -e" fixed1 "-e" fixed2 "-e" fixed3 "-e" fixed4 "'. Không yêu cầu dòng mới;) – ADTC

+1

Không khả dụng trên Solaris. Thay vào đó 'fgrep' được sử dụng. – majkinetor

2

Vượt qua -F đến grep.

7

Đó là fgrep hoặc grep -F sẽ không làm biểu thức chính quy. fgrep giống hệt grep -F nhưng tôi thích để không phải lo lắng về những lập luận, là bản chất lười biếng :-)

grep -> grep 
fgrep -> grep -F (fixed) 
egrep -> grep -E (extended) 
rgrep -> grep -r (recursive, on platforms that support it). 
+0

Đối với GNU grep, fgrep chỉ được cung cấp như là một liên kết tượng trưng đến grep mà làm cho nó mất -F – Daenyth

+3

'egrep' và' fgrep 'không được chỉ định bởi tiêu chuẩn POSIX; 'grep -F' và' grep -E' [là] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html) –

3

bạn cũng có thể sử dụng awk, vì nó có khả năng tìm kiếm chuỗi cố định, cũng như lập trình khả năng, ví dụ như chỉ

awk '{for(i=1;i<=NF;i++) if($i == "mystring") {print "do data manipulation here"} }' file 
0
cat list.txt 
one:hello:world 
two:2:nothello 

three:3:kudos 

grep --color=always -F"hello 

three" list.txt 

đầu ra

one:hello:world 
three:3:kudos 
+1

Điều này không thêm gì vào câu trả lời được chấp nhận hiện có. –

+0

Tôi không đồng ý. Đó là một minh họa hữu ích về cách thức hoạt động của nó. – timwaagh

Các vấn đề liên quan