shell脚本怎样提取匹配行及向下几行的内容,行数不定

文本如下:
student:
class:A
name:huang shan
name:li qing
name:zhang wenxia
name:wei xi

student:
class:B
name:ding yi
name:shen qi
name:qin fei

teacher:
grade:A
name:lu lin
name:du ye
name:du yu
name:li yifeng
name:chen ling
name:zhang jiang

student:
class:c
name:shen yi
name:wu tong

Summary:
student:no absent
teacher:no absent

===============================================================
要求将student关键字所在行及以下的class和name行全部输出,到空格停止。
跪求大神指导,之前有用sed都没有实现,很着急。

sed å¯ä»¥å®žçŽ° ä½†sed不灵活

已测试

#!/bin/sed -n
:next
/^student:/{
p
:gettoend
n
p
/^$/b next
b gettoend
}

 ä¿å­˜åˆ°æ–‡ä»¶code.sed中 使用 sed -f code.sed dat.txt 就可以输出文件

但文件格式必须严格,每个 student以空白行作为结束,结束行内没有任何字符。建议增加一个关键字end 用来作为结束标记。

追问

那有推荐的嘛,之前有看到awk或者grep,或者还有其他更方便的吗。这个脚本是把test文件里的信息进行筛选然后追加到result文件中。每次都要过滤汇总,然后一定周期再查看的。谢谢你啦。

追答

没的推荐 ,看你任务的复杂性。有复杂计算的话最好是 awk。过滤可以用grep 或sed。
如果只是筛选 最方便的就是这个sed 脚本了。

任务解决了 请采纳。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-06-23
请问用shell最后实现了吗?我最近也遇到非常类似的问题!
第2个回答  2016-08-31
sed '/^student:/,/^[ \t]*$/!d; ' c.txt

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网