1.sed替換換行符及標籤的使用
shell
echo "a,b,c,d" |sed 's/,/\n/g'|sed 's/\n/,/g'
解析:以上命令實現不了替換換行符,這跟sed的行處理方式有關,sed讀取一行時,會先把換行符去掉,處理完後再添加上,因此是沒法使用上面的命令進行換行符替換的,必須使用sed中的其它命令來完成。上面的恢復可使用tr命令:bash
echo "a,b,c,d" |sed 's/,/\n/g'|tr -t '\n' ','
如下命令能實現替換文本中所有換行符:ide
sed ':label;N;s/\n/:/;b label' filename sed ':label;N;s/\n/:/;t label' filename
解析:spa
:label; 這是一個標籤,用來實現跳轉處理,名字能夠隨便取(label),後面的b label就是跳轉指令.net
N; N是sed的一個處理命令,追加文本流中的下一行到模式空間進行合併處理,所以是換行符可見blog
s/\n/:/; s是sed的替換命令,將換行符替換爲冒號get
b label 或者 t label b / t 是sed的跳轉命令,跳轉到指定的標籤處it
2.sed輸出奇數行和偶數行class
a.sed
sed -n 'p;n' file #奇數行 sed -n 'n;p' file #偶數行
解析:n表示讀取下一個輸入行,用下一個命令處理新的行而不是第一個命令。
b.
sed -n '1~2p' file #奇數行 sed -n '2~2p' file #偶數行
解析:第一個數字表示起始行,第二個數字表示步長。
3.在字符之間插入空格
[root@localhost ~]# echo "abc" | sed 's#.#& #g' a b c
解析:&表示前面匹配到的內容。
參考資料: