sed經常使用用法技巧舉例

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

解析:&表示前面匹配到的內容。

參考資料:

http://my.oschina.net/shelllife/blog/118337

相關文章
相關標籤/搜索