如何测试文件是否包含特定的多行字面字符串?

时间:2016-08-23 14:44:20

标签: shell

我想grep一个包含换行符的文字字符串。我找到this question,但接受的答案显示-F选项,该选项使用一组换行符分隔的字符串。我还发现this question使用pcregrep-M选项,但它匹配正则表达式,而不仅仅是文字字符串。

那么如何测试文件是否包含特定的多行字面字符串?

2 个答案:

答案 0 :(得分:0)

这是使用awk的一种方法:

awk -v str="$string" 'BEGIN { n = split(str, lines, /\n/); i = 1 } 
    lines[i] == $0 { if (i++ == n) print "matched"; next } { i = 1 }' file

将字符串拆分为一系列行。 n是总行数(由split返回),i跟踪要比较的当前行。

如果当前行匹配且我们已到达最后一行,请打印该消息并跳至下一行。否则,将行计数器重置回1

答案 1 :(得分:-1)

只检查回车字符和新行,如果行索引增长,但没有回车符或新行字符(取决于操作系统),则存在多行字符串。我不确定这是否可以用grep完成,但应该很容易用任何编程语言实现甚至bash