我有
define host {
aaa
bbb
}
define host {
aaa
bbb
ccc
}
define host {
aaa
ddd
我想做的是:
for i in $([awk][sed] xxxxxxxx file) ; do grep "xxxxx" $i ; done
每次迭代都是一个函数
1)
define host {
aaa
bbb
}
2)
define host {
aaa
bbb
ccc
}
3)
define host {
aaa
ddd
}
要做到这一点,我尝试使用awk,sed。但我工作不好
THX。
答案 0 :(得分:0)
你需要这样吗?
$ awk 'BEGIN{ORS=RS="}\n"} /ccc/{print $0}' file
输出:
define host {
aaa
bbb
ccc
}
答案 1 :(得分:0)
将awk
与自定义RS
一起使用:
awk -v RS='}\n*' 'RT{print "(" NR ")", ORS $0 RT}' file
(1)
define host {
aaa
bbb
}
(2)
define host {
aaa
bbb
ccc
}
(3)
define host {
aaa
ddd
}
(1)
或(2)
或(3)
是此处的记录编号,您可以使用
awk -v RS='}\n*' 'RT{print $0 RT}' file
答案 2 :(得分:0)
如果你想看看你的功能,为什么不使用:
$ sed -n '/{/,/}/{/bbb/p}' file
bbb
bbb
它循环遍历功能块(从包含{
的行到包含}
的下一行)和打印机文本。