vi
vi 文件内全部替换
vi 替换存在的两行及以上空白行为一行, 分别先将三行空白变为一行,再将两行变为一行
:%s/\n\n\n\n/\r\r/g
:%s/\n\n\n/\r\r/g
如果有多个连续的空行,想保留一个空行 vim的命令为
%s/^\n$//g
删除所有的空行
%s/^\n//g
意思是全局替换所有以回车开头的字符,替换为空
在:后输入%s/a/b/g 其中s为:substitute,%表示所有行,g表示global
删除多行
vi删除行操作
法一:
单行删除,:1(待删除行)d
多行删除 ,:1,10d
法二:
光标所在行,dd
光标所在行以下的N行,Ndd
sed
sed 命令行中实现指定行2-8行中用xxx替换abc
sed -i "2,8s/abc/xxx/g" ./tmp.txt
zcat + sed = sed: no input files 不起作用
zcat tmp.bedpe.gz | sed -i "s/-/\t/g"
works:
zcat tmp.bedpe.gz | sed "s/-/\t/g"
取掉参数-i 就work了,-i is for “in-place editing” you can’t “in-place edit” a stream so sed is expecting a file but you haven’t given it any.
sed中*的使用
对以下内容进行操作,第一列数字前面有数目不一的空格,数字和字符串之间有一个空格
165540 C1
356644 D1
15967 U1
538151 e1
606949 i1
- 保留第一列和第二列,去除多余空格,第一列和第二列用\t分隔
sed 's/^ //g' | sed 's/^ //g' | sed 's/ /\t/g'
- 仅保留第一列数字,即要去除数字前面的空格和数字后的内容
sed 's/ *[A-za-z].*//g' | sed 's/^ //g' | sed 's/^ //g'
- 仅保留第二列的字符串
sed 's/ .* //g'
reference link
如果有多个连续的空行,想保留一个 vim的命令/删除所有空行命令 ref link: http://xstarcd.github.io/wiki/vim/vim_replace_encodeing.html