1. 程式人生 > >Sed命令總結

Sed命令總結

ron 單詞 style lis oca 擴展正則表達式 list ont script

sed命令:

sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。


語法:

sed [options] 'command' file(s)

sed [options] -f scriptfile file(s)


常用選項:

  • -e:允許在同一行裏執行多條命令

  • -n:和p命令一起使用表示只打印那些發生替換的行

  • -i:直接編輯源文件

  • -r:使用擴展正則表達式

  • -f<script文件>:指定的script文件來處理輸入的文本文件

  • -h:顯示幫助;

  • -V:顯示版本信息。


示例:

  1. sed 's/book/books/' file 文本中的book替換成books(每行第一個book)

  2. sed 's/book/books/g' file 文本中所有的book替換成books

  3. sed -n 's/test/TEST/p' file 表示只打印文本中發生替換的行

  4. sed -n '1,4'p 1.txt 打印指定的行

  5. sed -n '/root/'p 1.txt 打印包含指定字符串的行

  6. sed -i 's/book/books/g' file 表示直接修改源文件,文本中所有的book替換成books

  7. sed -i 's/^/#&/' 1.txt 表示每行行首添加#號,直接修改文件

  8. sed '/^$/d' file 刪除空白行(註意:d是在後面的,s命令在前面)

  9. sed '2d' file 刪除第二行

  10. sed '2,$d' file 刪除第二行到末行所有行

  11. sed '$d' file 刪除最後一行

  12. sed 's/[0-9]//g' 1.txt 刪除所有數字(實際上是所有數字替換成空了)

  13. sed 's/[^0-9]//g' 1.txt 刪除所有非數字

  14. sed 's/^192/localhost&

    /' file 所有以192開頭的行都會在行首加上localhost

  15. echo "a handsome boy"| sed 's/\w\+/[&]/g' \w\+ 匹配每一個單詞,[&] 替換它,& 表示所匹配到的單詞; 結果:[a] [handsome] [boy]

  16. sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' 1.txt == sed 's#\(root\)\(.*\)\(bash\)#\3\2\1#' 1.txt

    表示:調換兩個字符串位置; /可以使用 #,@ 等

  17. sed -e '/root/p' -e '/body/p' -n 1.txt == sed -n '/root/p; /body/p' 1.txt

    實現同時進行多個任務;會顯示root或者body的行

  18. sed -n 'p;n' 1.txt == sed -n '1~2p' 1.txt 打印奇數行

  19. sed -n 'n;p' 1.txt == sed -n '2~2p' 1.txt 打印偶數行

    first~step 表示以first開始,後面每次加step;例如1~2:表示所有的奇數行

  20. sed '=' 1.txt | sed 'N;s/\n/\t/' 顯示行號,‘=’ 命令能顯示行號,但是行號是單獨的一行,若想行號後面跟該行的內容,需要再進行處理

  21. sed G 1.txt 在每一行後面插入一個空行

  22. sed '{x;p;x}' 1.txt 在每一行前面插入一個空行


練習:

把/etc/passwd 復制到/root/test.txt

  1. 打印所有行

  2. 打印test.txt的3到10行

  3. 打印test.txt 中包含 'root' 的行

  4. 刪除test.txt 的15行以及以後所有行

  5. 刪除test.txt中包含 'bash' 的行

  6. 替換test.txt 中 'root' 為 'toor'

  7. 替換test.txt中 '/sbin/nologin' 為 '/bin/login'

  8. 刪除test.txt中5到10行中所有的數字

  9. 刪除test.txt 中所有特殊字符(除了數字以及大小寫字母)

  10. 把test.txt中第一個單詞和最後一個單詞調換位置

  11. 把test.txt中出現的第一個數字和最後一個單詞替換位置

  12. 把test.txt 中第一個數字移動到行末尾

  13. 在test.txt 20行到末行最前面加 'aaa:'


Sed命令總結