MOH*_*MED 0 linux shell awk sed ash
我有这样一个文件:
aaa.bbb.1.ccc
xxx.bbb.21
mmm.ppp
xxx.eee
mmm.qqqq
xxx.hhh.12.ddd
Run Code Online (Sandbox Code Playgroud)
我想移动开始与所有线路xxx.在文件的顶部用一个简单的命令(使用sed,awk,grep...).
所以我的新文件将如下所示:
xxx.bbb.21
xxx.eee
xxx.hhh.12.ddd
aaa.bbb.1.ccc
mmm.ppp
mmm.qqqq
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
一个SED解决方案:
sed -n '/^xxx/! { H }; // p; $ { x; s/^\n//; p }' infile
Run Code Online (Sandbox Code Playgroud)
该H追加不与开始所述内容xxx的保持空间,将其相反匹配inmediatly印刷// p.最后一行$恢复保留空间内容,删除前导换行符并打印.
它产生:
xxx.bbb.21
xxx.eee
xxx.hhh.12.ddd
aaa.bbb.1.ccc
mmm.ppp
mmm.qqqq
Run Code Online (Sandbox Code Playgroud)