blog.chinaunix.net/u2/76292/showart_1210882.html blog.chinaunix.net/u1/46039/showart_373817.html >>>>sed 刪除前N個字符 sed -i 's/^..//' file (N個.表示N個字符) sed s/[[:space:]]//g filename 刪除空格 sed /^$/d filename 刪除空行 1.合併行 zj@zj:~/Script/blog_script$ cat test1
1 2 3 4 合併上下兩行 zj@zj:~/Script/blog_script$ sed '$!N;s//n//t/' test1 1 2 3 4 合併匹配模式及其下一行 zj@zj:~/Script/blog_script$ sed '/2/{N;s//n//t/}' test1 1 2 3 4 合併所有行 zj@zj:~/Script/blog_script$ sed ':a;N;s//n//t/;ba;' test1 1 2 3 4 2.交換行 2.1已知行號時交換兩行 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 2.2不知道行號 要交換的兩行是連續行的情況下: 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~~~~ 3.忘了還有交互奇偶行 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 4.刪除行就不用說了吧 d嘍.... 5.刪除空行 sed '/^$/d' test2 刪除多個空行爲一個空行 sed '/^$/{N;/^/n*$/D}' test2 >>>>vim 刪除前N個字符 步驟: vi file 按shift : 然後輸入g/../s/// 回車! :%s/^..// :%s#^..##g vim aaaaa.txt 按ctrl+v進入列模式。 按向下方向鍵選擇要刪除的列。 按向右方向鍵選擇要刪除的字符(2下則刪除2個字符) x刪除 esc退出 |
sed刪除前N個字符
vim sed刪除前N個字符 刪除空行等 [轉]
2009-12-04 13:11
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.