我知道如何在sed
中使用实用程序bash
,grep
也很好。但是对于输出,它们总是输出包含该模式的行。
bash
是否有办法删除包含我想要的模式的特定字符串(使用regexp
)?
答案 0 :(得分:2)
这就是为什么你有grep --help
旗帜,$ echo 'hello world' | grep -o hello
hello
:
-o , - 仅匹配show 仅匹配PATTERN的行的部分
现在你可以
sed
使用$ echo "hello world" | sed 's/.*\(hello\).*/\1/'
:
GNU grep
答案 1 :(得分:1)
使用-o
,您可以使用$ echo ab cd ef gh | grep a
ab cd ef gh
$ echo ab cd ef gh | grep -o a
a
:
-o仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上。
示例:
com.microsoft.sqlserver.jdbc.SQLServerException: Connection Failed TCP / IP to localhost port 1433.
Error: "Connection refused: connect. Check the connection properties, make
sure that an instance of SQL Server is running on the host and accepting TCP
/ IP connections to port, and make sure that no firewall is blocking TCP
connections to port. ".
答案 2 :(得分:0)
通过sed,
$ echo 'hello world' | sed 's/\(hello\)\|./\1/g'
hello
$ echo 'hello world' | sed -r 's/(hello)|./\1/g'
hello