我想grep一个包含换行符的文字字符串。我找到this question,但接受的答案显示-F
选项,该选项使用一组换行符分隔的字符串。我还发现this question使用pcregrep
和-M
选项,但它匹配正则表达式,而不仅仅是文字字符串。
那么如何测试文件是否包含特定的多行字面字符串?
答案 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