linux vi 操作和 sed 命令

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
  1. 保留第一列和第二列,去除多余空格,第一列和第二列用\t分隔
sed 's/^  //g' | sed 's/^ //g' | sed 's/ /\t/g'
  1. 仅保留第一列数字,即要去除数字前面的空格和数字后的内容
 sed 's/ *[A-za-z].*//g' | sed 's/^  //g' | sed 's/^ //g'
  1. 仅保留第二列的字符串
sed 's/ .* //g'

reference link
如果有多个连续的空行,想保留一个 vim的命令/删除所有空行命令 ref link: http://xstarcd.github.io/wiki/vim/vim_replace_encodeing.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值