Browse Source

2022.3.15下午

EzioTAuditore 2 years ago
parent
commit
304c0dd225
3 changed files with 261 additions and 41 deletions
  1. 171 0
      Shell-数据处理.md
  2. 90 0
      Shell-标准输入输出.md
  3. 0 41
      shell-数据处理.md

+ 171 - 0
Shell-数据处理.md

@@ -0,0 +1,171 @@
+# Shell 数据处理
+
+## Linux中的常用符号
+
+| 符号       | 功能                                                   |
+| ---------- | ------------------------------------------------------ |
+| *          | 代表任意**字符串**                                     |
+| ?          | 代表任意**字符**                                       |
+| /          | 代表根目录或作为路径间隔符使用                         |
+| \ \<ENTER> | 续行符,可以使用续行符将一个命令行分写在多行上         |
+| $          | 变量标识符,用来读取变量                               |
+| '          | 在'……'中间的字符会被当做字符串处理                     |
+| "          | 在"……"中间的字符会被当做字符串处理,**允许读取变量**   |
+| `          | 在\`……\`中的命令会被执行                               |
+| <          | 输入重定向字符                                         |
+| >          | 输出重定向字符                                         |
+| \|         | 管道字符                                               |
+| &          | 后台执行字符,一般放在命令最后面。                     |
+| ;          | 命令分隔字符,按照顺序执行多个命令                     |
+| ()         | 在子Shell中执行命令(执行完毕自动结束,不影响当前Shell) |
+| {}         | 在当前Shell中执行命令                                  |
+| !          | 执行历史记录中的命令                                   |
+| ~          | 当前用户的主目录(家目录)                             |
+
+## 输入输出重定向
+
+| 语法            | 作用                                                         |
+| --------------- | ------------------------------------------------------------ |
+| cmd < file      | 从file重定向标准输出                                         |
+| cmd > file      | 把标准输出重定向到file中,如果file存在则**覆盖file**         |
+| cmd >> file     | 把标准输出重定向到file中,如果file存在则**追加到后面**       |
+| cmd 2> file     | 把标准错误重定向到file中,如果file存在则覆盖file             |
+| cmd 2>> file    | 把标准错误重定向到file中,如果file存在则追加到后面           |
+| cmd > file 2>&1 | 合并标准输出和标准错误,并重定向到file中,可以简写为`cmd >& file` |
+
+### 管道
+
+### 数据处理常用工具
+
+#### grep
+
+grep负责从数据源中检索对应的字符串,进行过滤,输匹配的行。
+
+### grep
+
+grep负责从数据源中检索对应的字符串,**行**过滤。输出的时被匹配的那行。
+
+`grep [options] "string" firename`
+
+| 选项 | 功能                              | 备注                               |
+| ---- | --------------------------------- | ---------------------------------- |
+| i    | 不区分大小写,linux默认区分大小写 |                                    |
+| v    | 反向查找,查找不包含              |                                    |
+| w    | 按单词搜索                        | 必须是正确的单词                   |
+| n    | 显示行号                          |                                    |
+| A    | 显示匹配行以及后面多少行 -A 5     |                                    |
+| B    | 显示匹配行以及后面多少行          |                                    |
+| o    | 打印匹配关键字                    | 只显示匹配到的关键字<br />以列显示 |
+| c    | 统计匹配到的次数                  | 只显示数字                         |
+| r    | 逐层遍历目录查找                  |                                    |
+| C    | 显示匹配前后多少行                |                                    |
+| l    | 只列出匹配的文件名                |                                    |
+| L    | 列出不匹配的文件名                |                                    |
+| e    | 使用正则表达式                    |                                    |
+| E    | 使用扩展正则表达式                |                                    |
+| ^key | 以关键字开头                      |                                    |
+| key$ | 以关键字结尾                      |                                    |
+| ^$   | 匹配空行                          |                                    |
+
+#### cut
+
+cut用于数据截取
+
+`cut 选项 "文件"`
+
+| 选项 | 功能                            | 备注                                                         |
+| ---- | ------------------------------- | ------------------------------------------------------------ |
+| c    | 以字符串为单位进行分割          | 截取字符串长度由后面数字确定                                 |
+| d    | 自定义分隔符,默认使用制表符\t  | 自定义字符使用""                                             |
+| f    | 与 -d一起使用,指定显示那个区域 | 多列之间可以加","分隔<br />连续多列之间家"-"连接<br />多列之间会携带分隔符 |
+
+#### tr
+
+tr用来对标准输入中通过替换或删除操作进行字符转换,主要用于删除文件中控制字符或进行字符转。
+
+使用tr时要转换两个字符串,第一个用于查询,第二个用于处理各种转换。
+
+`commands | tr [options] "string1" "string2 < "filename"`
+
+| 选项 | 功能                                                         | 备注 |
+| ---- | ------------------------------------------------------------ | ---- |
+| d    | 删除字符串中所有输入字符                                     |      |
+| s    | 删除所有重复出现字符序列,只保留第一个。<br />将重复出现的字符串压缩为一个字符串。 |      |
+
+#### sort
+
+sort是将文件的**每一行作为一个单位**,从**首字符向后**,一次按照ASCII码进行比较,最后将他们**升序**输出。
+
+`sort [options] [filename]`
+
+| 选项 | 功能                       | 备注         |
+| ---- | -------------------------- | ------------ |
+| u    | 去除重复行                 | 只保留第一行 |
+| r    | 降序排列                   |              |
+| o    | 将排序结果输出到文件中     |              |
+| n    | 以数字排序,默认是字符排序 |              |
+| t    | 分隔符                     |              |
+| k    | 第N列                      |              |
+| b    | 忽略前导空格               |              |
+| R    | 随机排序,每次结果都不同   |              |
+
+#### uniq
+
+### uniq
+
+uniq能够去除连续的重复行。**去重前先要排序**
+
+`uniq [options] [filename]`
+
+| 选项 | 功能           | 备注 |
+| ---- | -------------- | ---- |
+| i    | 忽略大小写     |      |
+| c    | 统计重复行次数 |      |
+| d    | 只显示重复行   |      |
+
+#### tee
+
+tee能够实现双向输出,将屏幕输出文件写入到文件或输出到屏幕。和"<<" ">>" "<" ">" 这几个工具一样。
+
+`somecommand | tee`
+
+| 选项 | 功能           | 备注 |
+| ---- | -------------- | ---- |
+| a    | 双向追加重定向 |      |
+
+#### paste
+
+paste工具用于合并文件行输出到屏幕,不会改动源文件。
+
+`paste [options] [file1] [file2] ...`
+
+| 选项 | 功能                                    | 备注 |
+| ---- | --------------------------------------- | ---- |
+| d    | 自定义间隔符                            |      |
+| s    | 将每个文件按照一行输出,航宇航以tab间隔 |      |
+
+#### xargs
+
+管道命令,将上一个命令的输出作为下一个命令的输入,做的是**数据源**,一般使用"|"符号。
+
+xargs命令,将上一个命令的输出作为下一个命令的**参数**。一般是和管道命令一起使用。
+
+`"[somecommand]|[filename]" | xargs [options] command`
+
+| 选项    | 功能                                                         | 备注 |
+| ------- | ------------------------------------------------------------ | ---- |
+| -a file | 从文件读入作为输入                                           |      |
+| -E flag | flag必须是一个以空格分割的标志<br />当xargs分析道flag时就停止 |      |
+| -p      | 没执行一次就询问下用户                                       |      |
+| -n num  | 表示执行的时候一次用的参数的个数,默认是全部使用             |      |
+| -t      | 先打印命令,然后执行,不询问用户是否执行。                   |      |
+| -i/-I   |                                                              |      |
+| -r      | 当xargs的输入为空的是停止xargs                               |      |
+| -d      | 分隔符,默认的分隔符是回车                                   |      |
+
+## 数据处理思路
+
+1. 先截取行
+2. 统一数据格式
+3. 截取字符串
+4. 处理字符串

+ 90 - 0
Shell-标准输入输出.md

@@ -0,0 +1,90 @@
+# Shell 标准输入输出
+
+## 文件描述符
+
+在Linux Shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆Shell同时也给出了相应的文件名:
+
+| 文件                   | 文件描述符                                   |
+| ---------------------- | -------------------------------------------- |
+| 输入文件--标准输入     | 0(缺省是键盘,为0时是文件或其他命令的输出) |
+| 输出文件--标准输出     | 1(缺省是屏幕,为1时是文件)                 |
+| 错误输出文件--标准错误 | 2(缺省是屏幕,为2时是文件)                 |
+
+## 文件重定向
+
+改变成程序运行的输入来源和输出地点。
+
+### 输出重定向
+
+| 命令             | 描述                                           |
+| ---------------- | ---------------------------------------------- |
+| cmd > file       | 把标准输出重定向到一个文件中                   |
+| cmd >> file      | 把标准输出重定向到一个文件中(追加)           |
+| cmd > file 2>&1  | 把标准输出和错误一起重定向到一个文件中         |
+| cmd 2 > file     | 把标准错误重定向到一个文件中                   |
+| cmd 2>> file     | 把标准错误重定向到一个文件中(追加)           |
+| cmd >> file 2>&1 | 把标准输出和错误一起重定向到一个文件中(追加) |
+
+### 输入重定向
+
+| 命令                | 描述                                                    |
+| ------------------- | ------------------------------------------------------- |
+| cmd < file1 > file2 | cmd命令以fiel1文件作为标准输入,以file2文件作为标准输出 |
+| cmd < file          | cmd命令以file文件作为标准输入                           |
+| cmd << delimiter    | 从标准输入中读入,直到遇到delimiter分界符               |
+
+### 绑定重定向
+
+| 命令     | 描述                            |
+| -------- | ------------------------------- |
+| cmd >& m | 把标准输出重定向到文件描述符m中 |
+| cmd <&-  | 关闭标准输入                    |
+| cmd 0>&- | 关闭标准输入                    |
+
+## 重定向的一些高级用法
+
+### 重定向标准错误
+
+**例1**:
+
+如果指令执行出错,将错误的信息重定向到空设备。
+
+```shell
+# 原始输出
+cat a
+cat: a: 没有那个文件或目录
+# 重定向到空设备
+cat a 2>/dev/null
+```
+
+**例2**:
+
+将指令执行的标准输出和标准错误重定向到指定文件。
+
+``` shell
+# 原始输出
+cat a test/test1.txt 
+cat: a: 没有那个文件或目录
+1
+2
+3
+4
+,
+1
+2
+3
+4
+# 重定向到文件中
+cat a test1.txt >out.put 2>&1
+cat out.put 
+cat: a: 没有那个文件或目录
+1
+2
+3
+4
+,
+1
+2
+3
+4
+```

+ 0 - 41
shell-数据处理.md

@@ -1,41 +0,0 @@
-# Shell 数据处理
-
-## Linux中的常用符号
-
-| 符号       | 功能                                                   |
-| ---------- | ------------------------------------------------------ |
-| *          | 代表任意**字符串**                                     |
-| ?          | 代表任意**字符**                                       |
-| /          | 代表根目录或作为路径间隔符使用                         |
-| \ \<ENTER> | 续行符,可以使用续行符将一个命令行分写在多行上         |
-| $          | 变量标识符,用来读取变量                               |
-| '          | 在'……'中间的字符会被当做字符串处理                     |
-| "          | 在"……"中间的字符会被当做字符串处理,**允许读取变量**   |
-| `          | 在\`……\`中的命令会被执行                               |
-| <          | 输入重定向字符                                         |
-| >          | 输出重定向字符                                         |
-| \|         | 管道字符                                               |
-| &          | 后台执行字符,一般放在命令最后面。                     |
-| ;          | 命令分隔字符,按照顺序执行多个命令                     |
-| ()         | 在子Shell中执行命令(执行完毕自动结束,不影响当前Shell) |
-| {}         | 在当前Shell中执行命令                                  |
-| !          | 执行历史记录中的命令                                   |
-| ~          | 当前用户的主目录(家目录)                             |
-
-## 输入输出重定向
-
-| 语法            | 作用                                                         |
-| --------------- | ------------------------------------------------------------ |
-| cmd < file      | 从file重定向标准输出                                         |
-| cmd > file      | 把标准输出重定向到file中,如果file存在则**覆盖file**         |
-| cmd >> file     | 把标准输出重定向到file中,如果file存在则**追加到后面**       |
-| cmd 2> file     | 把标准错误重定向到file中,如果file存在则覆盖file             |
-| cmd 2>> file    | 把标准错误重定向到file中,如果file存在则追加到后面           |
-| cmd > file 2>&1 | 合并标准输出和标准错误,并重定向到file中,可以简写为`cmd >& file` |
-
-### 管道
-
-### 数据处理常用工具
-
-#### find
-