sed 处理交换行
来源:互联网 发布:京东白条 知乎 编辑:程序博客网 时间:2024/05/01 02:46
用sed实现行的交换
已知行号时交换两行
zj@zj:~/Script/blog_script$ cat test
baidu music so terrible so bad
microsoft haha haha
yahoo byebye
google princess so good
这里是交换1,4行.当然你可以根据自己需要修改
zj@zj:~/Script/blog_script$ for(( i=1;i<=4;i++ )); do case $i in 1) sed -n 4p test;; 4) sed -n 1p test;; *) sed -n ${i}p test;; esac; done
google princess so good
microsoft haha haha
yahoo byebye
baidu music so terrible so bad
连续时好说:
zj@zj:~/Script/blog_script$ sed '1{h;d};2{G}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good
不知道行号
要交换的两行是连续行的情况下:
zj@zj:~/Script/blog_script$ sed '/baidu/{h;d};/microsoft/{G}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good
ps:交换包含bai与microsoft的行
两行不连续的情况:
zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/google/!ba;s//([^/n]*/)/n/(.*/)/n/(.*/)//3/n/2/n/1/}' test
google princess so good
microsoft haha haha
yahoo byebye
baidu music so terrible so bad
ps:交换含有baidu与google的行
不论连续不连续的都可以的:
zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/microsoft/!ba;/[^/n]*baidu[^/n]*/n[^/n]*microsoft[^/n]*$/{s//([^/n]*baidu[^/n]*/)/n/(.*/)//2/n/1/};s//([^/n]*/)/n/(.*/)/n/(.*/)//3/n/2/n/1/}' test
microsoft haha haha
baidu music so terrible so bad
yahoo byebye
google princess so good
zj@zj:~/Script/blog_script$ sed '/baidu/{:a;N;/google/!ba;/[^/n]*baidu[^/n]*/n[^/n]*google[^/n]*$/{s//([^/n]*baidu[^/n]*/)/n/(.*/)//2/n/1/;};s//([^/n]*/)/n/(.*/)/n/(.*/)//3/n/2/n/1/}' test
google princess so good
microsoft haha haha
yahoo byebye
baidu music so terrible so bad
ps:上面代码
/baidu/{....} 遇到含有baidu的行,开始做{}中的命令序列
:a;N;/google/!ba 循环读信息,直到读取google.
/[^/n]*baidu[^/n]*/n[^/n]*google[^/n]*$/这个就是说如果哦baidu与google之间只有一个/n,即这两个是连续行就:{s//([^/n]*baidu[^/n]*/)/n/(.*/)//2/n/1/;}交换这两行
如果不匹配上面的模式就是说不是连续行了.
s//([^/n]*/)/n/(.*/)/n/(.*/)//3/n/2/n/1/}
而在匹配连续行的情况下是不可能匹配上面表达式的.ok~~~~
交互奇偶行
zj@zj:~/Script/blog_script$ sed '$!N;s//([^/n]*/)/n/([^/n]*/)//2/n/1/' test
microsoft haha haha
baidu music so terrible so bad
google princess so good
yahoo byebye
- sed 处理交换行
- sed行处理详解(交换行,合并行,删除行等)
- 矩阵交换行
- 矩阵交换行
- 矩阵交换行
- 矩阵交换行
- hdoj5671 【交换行、列】
- 矩形交换行
- 01:矩阵交换行
- sed删掉换行符
- Table 交换行tr标签
- 换行处理
- sed命令换行符问题以及跳转命令-对文件处理,整个文件先转换为一行处理完后再把换行加上
- 二维数组 01 矩形交换行
- sed 中如何替换换行符
- [转载]sed命令替换换行符
- sed替换成换行符/回车符
- sed处理文件名
- extjs 省市区三级联动combobox
- 高级Sed命令---N
- AwOken 2.0 Icon Set for Ubuntu 11.04 Natty – PPA
- 标准linu休眠和唤醒机制分析(一)
- WCDMA信道
- sed 处理交换行
- Qt Creator发布release软件相关注意事项
- 标准linu休眠和唤醒机制分析(二)
- C#线程的使用
- Asp.net网站下文件解释
- 汇编中关于EQU指令的问题
- 神马是快乐?
- MFC实现python中的split功能
- 关于GDI