Linux命令——vi、cut、tr、wc、sort、uniq
vi 和 vim
^跳转当前行第一个非空字符
Ctrl + b向下翻页
Ctrl + f向上翻页
Shift + % 找到()[] {},以及在括号之间来回切换
全局替换
一次性替换文件中的所有出现的旧文本命令格式如下:
:%s/old/new/g
可视区域替换
先选中要替换文字的范围命令格式如下:
:s/old/new/g
确认替换
把上面的g替换成gc
y-yes 替换
n-no不替换
a-all替换所有
q-quit 退出替换1-tast 最后一个,并把光标移动到行首E向下滚屏
^Y向上滚屏
打开文件的时候直接定位到最后一行 : vi file +
打开文件的时候定位到指定行: vi file +num
以只读方式打开(0),直接编辑(E),恢复(R),删除交换文件(D),退出(Q),中止(A)
保存并退出: :wq 或者 :x 或者 ZZ(注意大写)
vim搜索设置高亮 set hlsearch
多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来
2. 按大写字母I,再插入注释符,例如//
3. 按esc键就会全部注释了
取消多行注释:
1. 进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列
2. 按字母j,或者k选中注释符号
3. 按d键就可全部取消注释
sp:上下分屏,后可跟文件名
vSp:左右分屏,后可跟文件名
Ctr+W+W:在多个窗口切换
vim折叠
:set fdm=marker 设置折叠模式
syntax (不常用)语法高亮折叠,在c/c++中会折叠花括号部分,其它格式代码中有的不能自动折叠。
marker (常用)标记折叠方法,如上面1-6所使用的方法。关闭vim折叠信息不会丢失,而且易用控制和标注
cut
使用冒号分割 passwd文件 显示第1 3至5列
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
cut -d: -f 1,3-5 /etc/passwd
使用空格分割文件 显示1-2列 将标准输出重定向到新的文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
cut -d' ' -f 1-2 users >user2
https://www.cnblogs.com/Spiro-K/p/6361646.html
tr
translate 翻译 转化 能够把文件中指定的字符进行替换
该命令后面只能使用标准输入重定向
使用A替换users文件中的e字符
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
tr 'e' 'A' < users
删除users文件中的空格
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
tr -d ' ' < users
删除users文件中的a字符
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
tr -d 'a' < users
查看passwd后两行的1,3列,并将:替换成空格
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# tail -2 /etc/passwd | cut -d: -f 1,3| tr ':' ' ' sshd 74 wangyan 500
wc
word count 字数统计 可以统计文件的行数 单词数 字符数量
-l: 只统计行数
-w: 统计单词数
-c: 统计字符数量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# wc /etc/passwd -l 20 /etc/passwd [root@51cto ~]# wc /etc/passwd -w 26 /etc/passwd [root@51cto ~]# wc /etc/passwd -c 899 /etc/passwd [root@51cto ~]# wc /etc/passwd 20 26 899 /etc/passwd
sort
对文本中的行进行排序
把users文件的行进行排序输出 升序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@WebServer ~]# sort users
把users文件的行进行排序输出 降序 -r
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@WebServer ~]# sort -r users
使用空格把users文件分割 使用第3列排序 -k -t
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@WebServer ~]# sort -t" " -k3 users
-u:去掉重复行
使用空格把users文件分割 使用第3列排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@WebServer ~]# sort -t" " -k3 -u users
-n:按数值排序 而不是按字符排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@WebServer ~]# sort -t" " -k3 -n users
uniq
unique 唯一 针对文本中的挨着的连续的重复行进行操作
连续重复的行只显示一行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# uniq uniqtest wang student 23 han teacher 38 liu teacher 29 zhang student 23 wang student 23
只显示重复的行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# uniq -d uniqtest wang student 23
显示全部重复的行
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# uniq -D uniqtest wang student 23 wang student 23
显示重复次数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[root@51cto ~]# uniq -c uniqtest 2 wang student 23 1 han teacher 38 1 liu teacher 29 1 zhang student 23 1 wang student 23