如果您使用的是 bash,则可以编写$'\n'. 这由外壳而不是程序扩展,因此它比其他选项更可靠。
如果您使用破折号(例如,在 shell 脚本中),您始终可以使用文字引用的换行符:
'
'
Run Code Online (Sandbox Code Playgroud)
不优雅,但它有效。
您必须使用 Perl Compatible Regular Expressions ( -P),因为扩展的正则表达式不支持前瞻。
很多时候,模仿负面的前瞻就足够了。
使用 grep 的-v开关通常可以实现:
grep -E 'PATTERN' | grep -vE 'PATTERNtimeout'
Run Code Online (Sandbox Code Playgroud)
相当于
grep -P 'PATTERN(?!timeout)'
Run Code Online (Sandbox Code Playgroud)
要(?!timeout)在另一个表达式中进行模拟,您可以使用以下子表达式:
(($|[^t])|t($|[^i])|ti($|[^m])|tim($|[^e])|time($|[^o])|timeo($|[^u])|timeou($|[^t]))
Run Code Online (Sandbox Code Playgroud)
($|[^t])字符串在此处结束或第一个字符不是t。t($|[^i])字符串在t或第二个字符不是i之后结束。ti($|[^m])字符串在ti或第三个字符不是tim之后结束。如果上述任何一项匹配,则字符串不是timeout。