拾遗:sed&vim

一、sed查漏补缺

1、sed x,+y,从第x行的开始,向下连续y行(包含x行在内是y+1行!)

f@z ~/testdir $ cat -n x.awk 
     1    #!/usr/bin/awk -f
     2    BEGIN{
     3    FS="
"
     4    RS=""
     5    OFS="___"
     6    ORS="*******"
     7    }
     8    
     9    {printf $1 "OFS" $2 $3 "
"}
f@z ~/testdir $ sed -n '2,+3p' x.awk
BEGIN{
FS="
"
RS=""
OFS="___"

2、sed 1~2,从第1行开始,步进为2行,此例中显示奇数行

f@z ~/testdir $ sed -n '1~2p' x.awk
#!/usr/bin/awk -f
FS="
"
OFS="___"
}
{printf $1 "OFS" $2 $3 "
"}

3、sed -n '/root/!p',显示不包含root的行(较少使用) 

f@z ~/testdir $ sed -n '/FS/!p' x.awk 
#!/usr/bin/awk -f
BEGIN{
RS=""
ORS="*******"
}

f@z ~/testdir $ sed -n '/FS/p' x.awk 
FS="
"
OFS="___"
{printf $1 "OFS" $2 $3 "
"}

4、sed -i.bak '',原地修改文件之前进行备份,类似用法:perl -p -e -i.bak

f@z ~/testdir $ sed -i.bak 's/^$/--------------------------/' x.awk
f@z ~/testdir $ ls x.awk*
x.awk  x.awk.bak
f@z ~/testdir $ perl -p -i.backup -e 's/-+//' x.awk
f@z ~/testdir $ ls x.awk*
x.awk  x.awk.backup

二、vim查漏补缺

1、r ! command,将command运行结果插入当前编辑文件

2、r /path/to/file,将file文件读入当前文件

3、w /path/to/file,将当前状态文件另存为file文件

f@z ~/testdir $ ls vim*
vim_testfile

4、yy,复制光标所在行

5、vim -o file1 file2,横向分屏显示多个文件;vim -O file1 file2,纵向分屏显示多个文件

6、V、v,多行选取,模拟鼠标的区域选取功能

大写v:

小写v: 

7、vim全局配置文件:/etc/vim/vimrc

  map ^P 0i#<ESC>  自定义绝对行首添加备注快捷键,其中^P指ctrl+v+p按键组合

8、d + G,删除光标所在行至文件末尾的所有内容;d + gg,删除光标所在行至文件开头的所有内容;d + 0,删除光标处至行首的字符;d + $,删除光标处至行尾的字符

三、其它

rev:按列反转;tac:按行反转 

f@z ~/testdir $ cat x.awk
#!/usr/bin/awk f
BEGIN{
FS="
"
RS=""
OFS="___"
ORS="*******"
}

{printf $1 "OFS" $2 $3 "
"}
f@z ~/testdir $ rev x.awk
f kwa/nib/rsu/!#
{NIGEB
"n"=SF
""=SR
"___"=SFO
"*******"=SRO
}

}"n" 3$ 2$ "SFO" 1$ ftnirp{
f@z ~/testdir $ tac x.awk
{printf $1 "OFS" $2 $3 "
"}

}
ORS="*******"
OFS="___"
RS=""
FS="
"
BEGIN{
#!/usr/bin/awk f 
原文地址:https://www.cnblogs.com/hadex/p/5748562.html