标签:shell
1.sed替换换行符及标签的使用
echo "a,b,c,d" |sed ‘s/,/\n/g‘|sed ‘s/\n/,/g‘
解析:以上命令实现不了替换换行符,这跟sed的行处理方式有关,sed读取一行时,会先把换行符去掉,处理完后再添加上,所以是无法使用上面的命令进行换行符替换的,必须使用sed中的其它命令来完成。上面的恢复可以使用tr命令:
echo "a,b,c,d" |sed ‘s/,/\n/g‘|tr -t ‘\n‘ ‘,‘
以下命令能实现替换文本中全部换行符:
sed ‘:label;N;s/\n/:/;b label‘ filename sed ‘:label;N;s/\n/:/;t label‘ filename
解析:
:label; 这是一个标签,用来实现跳转处理,名字可以随便取(label),后面的b label就是跳转指令
N; N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见
s/\n/:/; s是sed的替换命令,将换行符替换为冒号
b label 或者 t label b / t 是sed的跳转命令,跳转到指定的标签处
2.sed输出奇数行和偶数行
a.
sed -n ‘p;n‘ file #奇数行 sed -n ‘n;p‘ file #偶数行
解析:n表示读取下一个输入行,用下一个命令处理新的行而不是第一个命令。
b.
sed -n ‘1~2p‘ file #奇数行 sed -n ‘2~2p‘ file #偶数行
解析:第一个数字表示起始行,第二个数字表示步长。
参考资料:
http://my.oschina.net/shelllife/blog/118337
标签:shell
原文地址:http://wangyongbin.blog.51cto.com/8964308/1689734