本书未发布
shell入门
shell 常用命令
文件查找名利
命令 | 使用场景 | 优缺点 |
---|---|---|
find | 查找某一类文件 | 功能强大,速度慢 |
locate | 查找单个文件 | 功能单一,速度快 |
whereis | 查找程序的可执行文件、帮助文档等 | 不常用 |
which | 中查找程序的可执行文件 | 常用于查找程序的绝对路径 |
文本处理
- grep
语法格式
grep [option] [pattern] [file1,file2] //文件中包含的字符串 option 如:
选项 | 含义 |
---|---|
-v | 不显示匹配行的信息 |
-i | 搜索时忽略大小写 |
-n | 显示行号 |
例子:查找包含hello字符的行 grep -v hello file1
- sed
sed,流编辑器。对标准输出或文件逐行进行处理。也就是对文件的增删改查。
语法:
第一种: stdot|sed [option] “pattern command”
第二种:sed [option] “pattern command” file
option:
选项 | 含义 |
---|---|
-n | 只打印模式匹配行 |
-e | 直接在命令行进行sed编辑,默认选项 |
-f | 编辑动作保存在文件中,指定文件执行 |
-r | 支持扩展正则表达式 |
-i | 直接修改文件内容 |
pattern:
匹配模式 | 含义 |
---|---|
10command | 匹配到第10行 |
10,20command | 匹配从10行开始,20行结束 |
10,+5command | 10行开始,16行结束 |
/pattern1/command | 匹配到pattern的行 |
/p1/,/p2/command | 匹配从p1开始 p2 结束 |
command :
类别 | 编辑命令 | 含义 |
---|---|---|
查询 | p | 打印 |
增加 | a | 行后追加 |
i | 行前追加 | |
r | 外部文件读入,行后追加 | |
w | 匹配行写入外部文件 | |
删除 | d | 删除行 |
修改 | s/old/new | 将行内第一个old 替换为new |
修改 | s/old/new/g | 将行内全部的old 替换为new |
修改 | s/old/new/2g | 将行内前两个old 替换为new |
修改 | s/old/new/ig | 将行内所有old 替换为new,忽略大小写 |
- awk
awk可以对复杂文本进行复杂的处理,对输出结果进行处理,生成报告,如数据分析等
awk 的工作模式:
语法:
awk ‘BEGIN{}pattern{commands}END{}’file_name
standrd output | awk ‘BEGIN{}pattern{commands}END{}’file_name
语法解析
语法格式 | 解析 |
---|---|
BEGIN | 正式处理之前执行 |
pattern | 匹配模式 |
{commands} | 处理命令,可以多行 |
END | 处理完成之后执行 |
awk 的内置变量
内置变量 | 含义 |
---|---|
$0 | 整行内容 |
$1-$n | 当前行的第1-n个字段 |
NF(number filed 的缩写) | 当前行的字段个数 |
NR (number row) | 当前行号,从 1 开始 |
FNR (file number row) | 多文件处理时,每个文件行号单独计数,都是从0开始 |
FS (file separator) | 输入字段分割符,默认是一空格或tab键分割 |
RS | 输入行分割符,不指定回车换行符 |
OFS | 输出字段分割符 |
例子:
awk '{print $0}END{}' /etc/passwd 输出整个文件内容
awk 'BEGIN{FS==":"}{print $0}END{}' /etc/passwd //以字符 :进行分割 输出第一列
awk '{print $1}END{}' /etc/passwd //输出第一列,默认是空格符进行分割
awk '{print NF}END{}' list //输出每行的字段数
awk 的两种匹配模式
第一种为正则表达式(RegExp),第二种:关系运算匹配(>、< 、= 等等)
~
推荐文章: