Linux常用命令vi、cat、more、grep、cut、awk、sed
vi 文本编辑
命令模式
a(append)表示附加命令,i(insert)表示插入命令,x表示删除字符命令等。如果输入的字符不是vi的合法命令,则机器发出“报警声”,光标不移动。
输入模式
通过输入vi的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)可以从命令方式进入输入方式。在输入方式下,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当做该文件的正文。进入输入方式后,输入的可见字符都在屏幕上显示出来,而编辑命令不再起作用,仅作为普通字母出现。例如,在命令方式下输入字母i,进到输入方式,然后再输入i,就在屏幕上相应光标处添加一个字母i。
由输入方式回到命令方式的办法是按下Esc键。如果已在命令方式下,那么按下Esc键就会发出“嘟嘟”声。为了确保用户想执行的vi命令是在命令方式下输入的,不妨多按几下Esc键,听到嘟声后再输入命令。
vi 编辑文件 如:
输入i变为输入模式
esc退出输入模式
输入
:wq
保存文件并退出
转义模式
而在ex中,命令是以Enter;键结束的命令行。vi有一个专门的“转义”命令,可访问很多面向行的ex命令。为使用ex转义方式,可输入一个冒号(:)。作为ex命令提示符,冒号出现在状态行(通常在屏幕最下一行)。按下中断键(通常是Del键),可终止正在执行的命令。多数文件管理命令都是在ex转义方式下执行的(例如,读取文件,把编辑缓冲区的内容写到文件中等)。转义命令执行后,自动回到命令方式。
cat 查看文件
cat 文件名 ——一次显示整个文件
$ cat filename
创建一个文件
$ cat > filename
按Ctrl+d退出
只能创建新文件,不能创建已有文件!
将几个文件合并为一个文件
c.$cat file1 file2 > file
more
- more+n 从笫n行开始显示
more +n filename
- more -n 定义屏幕大小为n行
more -n filename
- +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
more +/pattern filename
按space键显示下一行
- -c 从顶部清屏,然后显示
- -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
- -l 忽略Ctrl+l(换页)字符
- -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
- -s 把连续的多个空行显示为一行
- -u 把文件内容中的下画线去掉
grep 搜索
https://www.cnblogs.com/gaochsh/p/6701659.html
命令格式:
grep [option] pattern file
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
- 查找指定进程
- 查找指定进程个数
ps -ef|grep svn -c
从文件中读取关键词进行搜索
从文件中查找关键词
- 找出以u开头的行内容
- 输出非u开头的行内容
grep ^[^u] filename
- 输出以hat结尾的行内容
grep hat$ filename
- 例出一个文本文件中数据的行数
grep -c ‘.*’ filename
- 搜索log目录下卡号为:“4563513600036385540”,在哪个文件的具体位置及行数
grep -rin “4563513600036385540” log/
- 显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行
cut 剪切
https://blog.csdn.net/u011003120/article/details/52190187
格式:cut -[n]b file
- cut -c file
- cut -d[分隔符] -f[域] file
awk 文本分析
https://www.cnblogs.com/datalife/p/5887715.html
格式:
awk '{pattern + action}' {filenames}
- 例出一个文本文件中数据的行数
awk ‘END{print NR}’ filename
sed 编辑
不会修改文件,只会将输出打印到屏幕上
https://www.cnblogs.com/ginvip/p/6376049.html
删除
- 删除2-5行(只删除2-5行,屏幕显示其他行)
nl filename|sed ‘2,5d’
- 删除d(从第三行到最后一行,显示其他行)
sed ‘3,$d’ filename
- 删除“north”,打印其他行
sed ‘/north/d’ filename
替换
- s替换(将所有的west替换为north)
sed ‘s/west/north/g’ filename
说明:s 命令用于替换。命令末端的 g 表示在行内全局替换;也就是说如果每一行里出现多个west,所有的 west 都会被替换为 north。如果没有 g 命令,则只将每一行的第一 west 替换为 north。
- 所有以 2 位数结尾的行后面都被加上.5。
sed ‘s/[0-9][0-9]$/&.5/’ filename
- 例出一个文本文件中数据的行数
sed -n ‘$=’ filename