常用命令学习笔记
主要命令:grep find cat awk sed
对于不清楚的命令可通过 man ${命令} 来查看如:man grep
grep 查找过滤
命令说明:
grep
、egrep
、fgrep
的作用大致相同,均为查找匹配出相应的字符。(支持正则表达式)
命令格式:
1 | grep -option “匹配字符串/正则表达式” 文件名 |
命令参数:
参数 | 描述 |
---|---|
-A num or –after-context=num | 输出匹配的行、并显示后num行 |
-B num or –before-context=num | 输出匹配的行、并显示前num行 |
-C num or –context=num | 输出匹配的行、并显示前、后num行 |
-E | 可以多条件匹配、相当于egrep |
-n | 显示输出匹配的行号 |
-i | 不区分字符串大小写 |
-v | 取反、输出不匹配的字符串行 |
-c | 统计符合匹配的行数 |
-w | 按单词搜索 (如搜索bigdata bigdata1不在结果中) |
-F | 将匹配条件强制转换为字符串、相当于fgrep |
find 查找文件目录
命令说明:
find
主要用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数(option),则 find 命令将在当前目录下查找子目录与文件
命令格式:
1 | find path -option 查找文件格式 |
命令参数:
参数 | 描述 |
---|---|
-type [f、d、l] | f:文件 d:目录 l:链接文件 |
-name | 按照名字查找 |
-maxdepth | 查找目录的级数 |
-size | 按文件大小查找 单位c:字节 k M |
-mtime | 按修改时间 |
-atime | 按访问时间 (-ctime 按修改时间) |
-perm | 按权限来查找 |
-user | 按文件属主来查询 |
-nouser | 查找无效属主的文件 |
-group | 按文件属组来查询 |
-nogroup | 查询无效属组的文件 |
-delete | 查找到的文件删除(比较操作) |
! | 取反 |
-a | and 去交集 |
-o | or 去并集 |
-exec | 理解为传参,边执行、边传参(相对于管道来说管道是执行完成再传参) |
实例
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
1 | find . -name "*.c" |
将目前目录其其下子目录中所有一般文件列出
1 | find . -type f |
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
1 | find . -ctime -20 |
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
1 | find /var/log -type f -mtime +7 -ok rm {} \; |
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
1 | find . -type f -perm 644 -exec ls -l {} \; |
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
1 | find / -type f -size 0 -exec ls -l {} \; |
查找当前目录下文件大小小于100字节的文件
1 | find . -size -100c |
cat 文档查看器
命令说明:
cat
命令用于连接文件并打印到标准输出设备上。
命令格式:
1 | cat [-AbeEnstTuv] [--help] [--version] fileName |
命令参数:
参数 | 描述 |
---|---|
-n | 由 1 开始对所有输出的行数编号 |
-b | 和 -n 相似,只不过对于空白行不编号 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行。 |
-v | 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。 |
-E | 在每行结束处显示 $ |
-T | 将 TAB 字符显示为 ^I |
-A | 等价于 -vET。 |
-e | 等价于”-vE”选项; |
-t | 等价于”-vT”选项; |
awk文本分析工具
命令说明:
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据的分析并生成报告时,显得尤为强大。简单的来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行各种分析处理。
命令格式:
1 | awk '{pattern + action}' {filenames} |
命令参数:
参数 | 描述 |
---|---|
-F | 指定分隔符、默认以 空格 分隔 |
BEGIN | 头部,后面跟'{print "头部信息"}' ,给输出加上头部 |
END | 尾部,在输出的最后一行加入内容,后面跟'{print "尾部信息"}' |
实例:
将maptxt.txt文件内容逐行以,
切割替换位置打印出来(即 A,B
=> B,A
)
1 | cat maptxt.txt|awk -F ',' '{print$2","$1}' |
sed流编辑器
命令说明:
sed
用于过滤和转换文本的流编辑器
命令格式:
1 | sed [OPTION]... {script-only-if-no-other-script} [input-file]... |
命令参数:
参数 | 描述 |
---|---|
-e | 多点编辑,每个条件前面都必须加-e 选项 |
-n | 取消默认输出 |
-i | 直接对文件操作,最后放到最后使用 |
-r | 支持正则表达式 |
实例
在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:
1 | sed -e 4a\newLine testfile |
首先查看testfile中的内容如下:
1 | cat testfile #查看testfile 中的内容 |
使用sed命令后,输出结果如下:
1 | sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串 |