llyang 大佬有话说 : 2020-4-1 13:12:32
如何实现跨行操作(sed awk grep …)?搞定,谢谢tinyfish
本帖最后由 llyang 于 2020-4-1 13:57 编辑
文件 myserver.conf 内容如下:
server {
listen 80;
listen [::]:80;
}
server {
listen 443 ssl http2;
}
server {
listen 1080;
listen [::]:1080;
}
cat myserver.conf | sed -n ‘/^server/,/^}/p’
这样就成了全选择
我想单独选择每个段落
只选包含80区域(line 1-4),只选443区域(line 5-7),只选1080区域(line 8-11) — server { … }
百度下、谷歌下的“高手”,请你绕行,谢谢
tinyfish 大佬有话说 : 2020-4-1 13:31:50
本帖最后由 tinyfish 于 2020-4-1 13:37 编辑
只会 awk 的……
cat myserver.conf | awk ‘$0~str{sub(".","server&");print}’ RS=’server’ ORS=” str="443"
PS:是gawk……
一个不知名网友 大佬有话说 : 2020-4-1 13:17:50
好吧,那我绕行了 yc005t
这是最好的年代 大佬有话说 : 2020-4-1 13:20:59
vim可以做到单独选择段落用正则处理,具体怎么操作忘了yc022t
llyang 大佬有话说 : 2020-4-1 13:24:40
这是最好的年代 大佬有话说 : 2020-4-1 13:20
vim可以做到单独选择段落用正则处理,具体怎么操作忘了
vim没研究过,即使行也没用,无法实现自动化
跨行容易,特征字符也容易
跨行+中间特征字符,我就不会了:'(
llyang 大佬有话说 : 2020-4-1 13:33:28
本帖最后由 llyang 于 2020-4-1 13:56 编辑
tinyfish 大佬有话说 : 2020-4-1 13:31
只会 awk 的……
awk grep都行哈,能到达效果就好。
那我修改下题目吧
有点效果,但是没有显示全部段落, 到443所在行就没了
cat myserver.conf | awk ‘$0~str{sub(".","server&");print}’ RS=’server’ ORS=” str="443"
搞定,谢谢你