关于sed 参数n的问题 不要给我让我参考blog或者什么的,解释最好清楚一点$ vi empnametitle.txtJohnDoeCEOJason SmithIT ManagerRaj ReddySysadminAnand RamDeveloperJane MillerSales Manager为什么$ sed –n -e '{x;n}’ –e ‘/Ma

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 13:28:07
关于sed 参数n的问题 不要给我让我参考blog或者什么的,解释最好清楚一点$ vi empnametitle.txtJohnDoeCEOJason SmithIT ManagerRaj ReddySysadminAnand RamDeveloperJane MillerSales Manager为什么$ sed –n -e '{x;n}’ –e ‘/Ma

关于sed 参数n的问题 不要给我让我参考blog或者什么的,解释最好清楚一点$ vi empnametitle.txtJohnDoeCEOJason SmithIT ManagerRaj ReddySysadminAnand RamDeveloperJane MillerSales Manager为什么$ sed –n -e '{x;n}’ –e ‘/Ma
关于sed 参数n的问题 不要给我让我参考blog或者什么的,解释最好清楚一点
$ vi empnametitle.txt
JohnDoe
CEO
Jason Smith
IT Manager
Raj Reddy
Sysadmin
Anand Ram
Developer
Jane Miller
Sales Manager
为什么
$ sed –n -e '{x;n}’ –e ‘/Manager/{x;p}' empnametitle.txt
Jason Smith
Jane Miller
一步一步来
比如执行完第一个x后是模式空间和保留是什么内容,为什么.

关于sed 参数n的问题 不要给我让我参考blog或者什么的,解释最好清楚一点$ vi empnametitle.txtJohnDoeCEOJason SmithIT ManagerRaj ReddySysadminAnand RamDeveloperJane MillerSales Manager为什么$ sed –n -e '{x;n}’ –e ‘/Ma
sed 按行读取文本内容并在模式空间中处理,保留空间仅用于暂存数据.
第一步,读入一行(JohnDoe)到模式空间,x 交换模式空间与保留空间的内容.刚开始保留空间内为空,所以其结果就是JohnDoe被放入保留空间暂存,而模式空间被清空.n 主动读入下一行(CEO)到模式空间,并执行正则匹配Manager,由于不满足条件,因此后面的语句略过.
第二步,再读入一行(Jason Smith),x交换模式空间与保留空间内容,此时模式空间内容为JohnDoe,保留空间内容为Jason Smith.n 读入下一行替代了当前模式空间的内容,使模式空间内容为IT Manager.由于判断匹配Manager,执行后面的语句x和p,打印交换数据后模式空间的内容Jason Smith.
依此类推,保留空间的内容始终是当前模式空间内容的上一行.
此命令的作用就是,读取文件,当匹配到Manager时,就打印其上一行.