2013-01-31 46 views

回答

1

man grep

-F, --fixed-strings 
     Interpret PATTERN as a list of fixed strings, separated by 
     newlines, any of which is to be matched. (-F is specified by 
     POSIX.) 
+0

除非我失去了一些東西,我不認爲我可以匹配多行輸入與此。例如,匹配「z \ na \ nb \ nc」文件中的「a \ nb」? – user1527166

1

使用grep -F

-F, --fixed-strings

解釋圖案作爲固定的字符串,並以換行,其中的任何一個是被匹配分隔的列表。 (-F由 POSIX指定)。

編輯:最初我不明白的問題不夠好。如果模式本身包含換行符,使用-z選項:

-z, --null-data 
      Treat the input as a set of lines, each terminated by a zero 
      byte (the ASCII NUL character) instead of a newline. Like the 
      -Z or --null option, this option can be used with commands like 
      sort -z to process arbitrary file names. 

我測試過它,多模式的合作。

1

如果你試圖匹配不包含空行(例如,它不具有兩個連續的換行符),輸入字符串,你可以這樣做:

awk 'index($0, "needle\nwith no consecutive newlines") { m=1 } 
    END{ exit !m }' RS= input-file && echo matched 

如果你需要找到一個字符串連續換行符,將RS設置爲某個不在文件中的字符串。 (請注意,如果將RS設置爲多個字符,則awk的結果是未指定的,但大多數awk將允許它爲字符串。)如果您願意將搜索的字符串設置爲正則表達式,並且您的awk支持設置RS到多個字符,你可以這樣做:

awk 'END{ exit NR == 1 }' RS='sought regex' input-file && echo matched 
相關問題