Sed命令總結
sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。
語法:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
常用選項:
-e:允許在同一行裏執行多條命令
-n:和p命令一起使用表示只打印那些發生替換的行
-i:直接編輯源文件
-r:使用擴展正則表達式
-f<script文件>:指定的script文件來處理輸入的文本文件
-h:顯示幫助;
-V:顯示版本信息。
示例:
sed 's/book/books/' file 文本中的book替換成books(每行第一個book)
sed 's/book/books/g' file 文本中所有的book替換成books
sed -n 's/test/TEST/p' file 表示只打印文本中發生替換的行
sed -n '1,4'p 1.txt 打印指定的行
sed -n '/root/'p 1.txt 打印包含指定字符串的行
sed -i 's/book/books/g' file 表示直接修改源文件,文本中所有的book替換成books
sed -i 's/^/#&/' 1.txt 表示每行行首添加#號,直接修改文件
sed '/^$/d' file 刪除空白行(註意:d是在後面的,s命令在前面)
sed '2d' file 刪除第二行
sed '2,$d' file 刪除第二行到末行所有行
sed '$d' file 刪除最後一行
sed 's/[0-9]//g' 1.txt 刪除所有數字(實際上是所有數字替換成空了)
sed 's/[^0-9]//g' 1.txt 刪除所有非數字
sed 's/^192/localhost&
echo "a handsome boy"| sed 's/\w\+/[&]/g' \w\+ 匹配每一個單詞,[&] 替換它,& 表示所匹配到的單詞; 結果:[a] [handsome] [boy]
sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' 1.txt == sed 's#\(root\)\(.*\)\(bash\)#\3\2\1#' 1.txt
表示:調換兩個字符串位置; /可以使用 #,@ 等
sed -e '/root/p' -e '/body/p' -n 1.txt == sed -n '/root/p; /body/p' 1.txt
實現同時進行多個任務;會顯示root或者body的行
sed -n 'p;n' 1.txt == sed -n '1~2p' 1.txt 打印奇數行
sed -n 'n;p' 1.txt == sed -n '2~2p' 1.txt 打印偶數行
first~step 表示以first開始,後面每次加step;例如1~2:表示所有的奇數行
sed '=' 1.txt | sed 'N;s/\n/\t/' 顯示行號,‘=’ 命令能顯示行號,但是行號是單獨的一行,若想行號後面跟該行的內容,需要再進行處理
sed G 1.txt 在每一行後面插入一個空行
sed '{x;p;x}' 1.txt 在每一行前面插入一個空行
練習:
把/etc/passwd 復制到/root/test.txt
打印所有行
打印test.txt的3到10行
打印test.txt 中包含 'root' 的行
刪除test.txt 的15行以及以後所有行
刪除test.txt中包含 'bash' 的行
替換test.txt 中 'root' 為 'toor'
替換test.txt中 '/sbin/nologin' 為 '/bin/login'
刪除test.txt中5到10行中所有的數字
刪除test.txt 中所有特殊字符(除了數字以及大小寫字母)
把test.txt中第一個單詞和最後一個單詞調換位置
把test.txt中出現的第一個數字和最後一個單詞替換位置
把test.txt 中第一個數字移動到行末尾
在test.txt 20行到末行最前面加 'aaa:'
Sed命令總結