我正在运行Ubuntu 14,并尝试使用sed在文件中查找特定行。
当我运行命令时
sed '/password\s[success=\d\sdefault=ignore]\spam_unix.so\sobscure\s+sha512/' testfile.txt
我得到sed: -e expression #1, char 74: missing command
我正在寻找线路:
password [success=1 default=ignore] pam_unix.so obscure sha512
我想念什么或做错什么了?
答案 0 :(得分:0)
您错过了一个命令。尝试在末尾添加强制字符p:
sed /password\s[success=\d\sdefault=ignore]\spam_unix.so\sobscure\s+sha512/p' testfile.txt
如果以某种编程语言使用正则表达式,通常需要编写模式并通过库中的其他方法使用它。模式需要的sed或awk之类的工具还提供有关您要使用此模式做什么的信息。外汇:
答案 1 :(得分:-1)
您忘了转义一些应按字面意义输入的字符。正则表达式将方括号视为字符类而不是文字字符,并且pam_unix.so
中的点也应转义。这是针对字符串的正则表达式:
password(\s+)\[success=\d\sdefault=ignore\](\s+)pam_unix\.so\sobscure(\s+)sha512
如果将其放入命令中,它将看起来像这样:
sed '/password(\s+)\[success=\d\sdefault=ignore\](\s+)pam_unix\.so\sobscure(\s+)sha512/' testfile.txt
Here是我使用的正则表达式的链接