aio
:help 看vim编辑器的属性
- 全屏编辑器:nano(字符工具), gedit(图形化工具),vi,vim- 行编辑器:sed
vim /etc/passwd +26 定位行号
vim /etc/passwd +/user 定位名字
vim -d passwd 1.txt (ctrl +w +上下左右来回切换) :qall!退出
查找文件:
/:从光标向下查找 ^行首$行尾
?:从光标向上查找 set nu显示行号 (:16)在编辑器里面进行行号跳转
dG删除光标及以下
dgg删除光标及以上
光标分割线 :set cul (nocul)
范围处理动作:
内容替换:
:17,22($)s/root/ROOT/ig
:%s/root/ROOT/g #全文替换 不加g就是每行第一个匹配结果替换
可视化模式:
ctrl +v + shift+i +esc
小工具:
grep 过滤行
cut 列截取 cut -d:(字段分隔符) -f1,6,7 file1.txt
--output-delimiter=字符串 (输出字段分割符)
sort 排序也可以去重 -nr(降序) -n(升序) -u(去重) -o (输出到一个文件)
uniq 去重+统计 -r(统计重复数) -i(忽略大小写)
Tee 双向覆盖重定向
diff 可以比较两个文件 和目录里文件不同
paste 合并文件
tr 字符转换 tr -s 'e' 字符聚合 -d (删除)
ip a show :只显示一个网卡
seq 生成数字 seq 10(起始值) 2(步长) 20 (结束值)
grep -i(不区分大小写) -c(统计行数)
-v (反转) -E(使用拓展正则)
grep -nir 定位包含关键字的文件
sed -i(更改源文件) -e(可以进行多操作) -E(拓展正则)
-n(取消默认输出)
sed -n '\/dev\/ma/p' sed -n '1,3p'(打印的是1-3行) sed -n '1~3!p' (~步长) (!取反)
sed -n '3s/nihao/hh/p' sed.txt (#@/) 前面+数字就是第几行替换
sed -i '/sed6/s@sed@SED@' sed.txt
sed -i '3s/sed/SED/2' sed.txt 替换第三行第二列(前边指定行号,后边指定列号)
sed -i '1i\woaini' sed.txt(在行前插入内容)
sed -i '2a\zpx' sed.txt(在所在行的下一行插入内容)
grep(行过滤) sed(快速编辑) awk(字段过滤) 编程语言
awk -F(定义字段分割符)
-v(定义变量)
awk [参数] '[动作]' 【文件名】
BETGIN{} {} END{}
awk '{print $(NF-1)}' awk.txt
awk '{print $NR}' awk.txt
awk -v 'FS=:' -v 'OFS=@' '{print $1,$7}' passwd
awk '{printf "%s\n",$1}' awk.txt 我这个位置只能放字符串
占位符号 %d:我这个位置只能放数字
%f: 我这个位置只能放带小数点的数字
正则表达式:
基本正则:BRE(需要转义) + 、 ? 、 | 、 () 、 {} 需要用`` 转义才能作为元字符使用
拓展正则:ERE ()
通配符
1 正则表达式用来在文件中匹配符合条件的字符串,主要是目的是包含匹配。- grep、awk、sed 等命令可以支持正则表达式。2 通配符用来匹配符合条件的文件名,通配符是完全匹配。- ls、find、cp 之类命令不支持正则表达式,可以借助于shell通配符来进行匹配。.:匹配任意一个字符*:匹配任意内容?:匹配任意一个内容[]:匹配中括号中的一个字符
m最少。n最多