1. 删除含有pattern的行
:g/pattern/d
:g/^$/d  删除空白行
:s/^#.*$//g   删除以#开头的 
 
:s/pattern\n// # 删除内容为 pattern 的行
  1. 删除不包含pattern的行
:g!/pattern/d
:v/pattern/d
  1. 将多行转换成一行
:1,$s/\n//g
  1. 倒叙文件行(可以用tac将文本内容重定向到另一个文本中)
:g/^/m 0
:g/pattern/cmd\
^可以匹配每一行开头 \:m 0 将匹配到的每一行依次move到第0行. 实现了行倒序

5. vi中使用宏实现填写一列自增数字 1. 正常模式下在列首按下q,然后按下a(表示使用a寄存器) 2. 复制数字一行yy,在下一行粘贴p 3. ctrl+a,数字会自增,ctrl+x数字会自减 4. q突出录制 5. 10@a 则会生成10列 (问题,单独一行为一列比较方便,如果是在行中插入的列,此种方式不是很好用,另外日期不能自增)

  1. 查找相同的两行
:sort
/^\(.\+\)$\n\1
  1. 删除重复行
:sort
:g/^\(.\+\)$\n\1/d

8.查询一行字符串出现重复次数

string="text,text,text,text"
char=","
echo "${string}" | awk -F"${char}" '{print NF-1}'
 
:s/pattern//n

9.生成递增数据

vim 1 -20 
新建文本
插入模式
ctrl-r = range(1,200)

10 xargs

cat a.txt | xargs  -n 1  -P 4  php artisan ts:schedule --place
-P 4  4个线程
-n 1 一次处理1个数据
-p  确认后执行
 
  1. 在行尾部插入内容
选中多行,然后按冒号,输入 :'<,'>normal A1234 回车即可。('< 代表选中的开始行号,'> 是结束行号,该命令会在这几行重复执行后面的命令,normal 的意思就是normal 模式下击键模拟,这里模拟A(行尾追加),然后追加内容是1234)
  1. 隔行插入
:%s/.*\n.*\n.*\n/\0你要插入的内容\r/g
 
`%s` - 对于文件全部内容
`.*\n` 是一行,包括行尾; 要隔多少行才插入一行你要插入的内容,就有多少个`.*\n`
`\0` 是整个匹配的表达式
`\r` 添加一个新的行