我希望在给定单词匹配
后打印所有行直到换行符文件:
[`odbcname`]
Driver = /`usr`/lib/`odbc`/`libmyodbc.so`
Description = `MyODBC`3.51 Driver `DSN`
SERVER = my.database.server.com
PORT =
[`MSSQLTestServer`]
Driver = `FreeTDS`
输出:
[`odbcname`]
Driver = /`usr`/lib/`odbc`/`libmyodbc.so`
Description = `MyODBC` 3.51 Driver `DSN`
SERVER = my.database.server.com
PORT =
我试过
cat grep '^\[odbcname]|^$'`
但我不知道如何打印所有行直到空白区域。
答案 0 :(得分:2)
$ awk -v RS= '/\[odbcname\]/' file
[odbcname]
Driver = /usr/lib/odbc/libmyodbc.so
Description = MyODBC3.51 Driver DSN
SERVER = my.database.server.com
PORT =
将记录分隔符设置为段落模式(即一个或多个空行),找到图案(并打印)。
答案 1 :(得分:1)
使用sed:
$ sed -n '/^\[odbcname\]/,/^$/{/^$/d;p}' file
[odbcname]
Driver = /usr/lib/odbc/libmyodbc.so
Description = MyODBC3.51 Driver DSN
SERVER = my.database.server.com
PORT =
答案 2 :(得分:0)
使用awk
,您可以执行以下操作:
$ awk '/odbcname/,NF==0' file
[odbcname]
Driver = /usr/lib/odbc/libmyodbc.so
Description = MyODBC3.51 Driver DSN
SERVER = my.database.server.com
PORT =
另一种更通用的方法是:
awk '/odbcname/{p=1}p;NF==0{p=0}' file