借个例子说明sed的模式空间,以及针对模式空间的N,P,D用法
下面是我们要处理的文本:题目要求是把所有散列在不同行的同一个中括号中的数据集中在一起, 见下表就秒懂了吧
处理前的文本 | 处理后的文本 |
[123456] [AS DEF] [ABCD 123W F] [789ADC] [12 34 456AB WQ 456 WIU] |
[123456] [ASDEF] [ABCD123WF] [789ADC] [1234456ABWQ456WIU] |
先说指令: sed '/^\[/{:a;N;/^\[/!{s/\n\[//g;ta}};P;D;' enter.txt
这条指令真是把本人折腾得够呛啊, 其中涉及到sed中几个关键指令的意义:
1) N 读取下一行数据到模式空间, 不挤掉之前模式空间的内容;
2) P 打印模式空间中第一行内容;
3) D 删除模式空间中第一行内容, 并对模式空间中的数据, 再来一遍sed命令
4) sed每次处理完一行数据后(或者指令读到文件尾), 默认情况下都是要把模式空间中的内容输出, -n会不打印.
好了,基于上面四点可以自己先分析下上面的指令了. enjoy.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步