diff --git "a/50 \347\216\213\346\231\264/20240604awk.md" "b/50 \347\216\213\346\231\264/20240604awk.md" new file mode 100644 index 0000000000000000000000000000000000000000..5e0ad3b71be6fced3aa2e7257fbe5c322a8b021b --- /dev/null +++ "b/50 \347\216\213\346\231\264/20240604awk.md" @@ -0,0 +1,244 @@ +#### `Awk` 中的常用动作(action) + +- `printf`:格式化输出。例如,`printf "%s\n", $1` 以格式化方式打印第一字段。 + + - 语法: + + ```bash + printf (format, expression1, expression2, ...) + # format 是一个包含格式说明符的字符串。 + # expression1, expression2, ... 是要格式化并插入到 format 字符串中的表达式。 + ``` + + - 常用的格式说明符 + + - `%s`:字符串 + - `%d`:有符号十进制整数 + - `%f`:浮点数 + + - 带有宽度和对齐的写法: + + ​ +号右对齐,-号左对齐: + + - `%5s`:字段宽度为 5 的字符串,右对齐 + - `%-5s`:字段宽度为 5 的字符串,左对齐 + - `%10d`:字段宽度为 10 的有符号十进制整数,右对齐 + - `%-10d`:字段宽度为 10 的有符号十进制整数,左对齐 + - `%8.2f`:字段总宽度为 8,其中小数点后有 2 位的浮点数s + +------ + +1. ##### vi 编辑器有几种模式? + +3种:命令模式、插入(编辑)模式、底行模式 + +##### 2.如何进入 vi 编辑器的插入模式 + +1. a:在当前光标下一位开始编辑 +2. A:在当前光标所在行行尾开始编辑 +3. i:在当前光标开始编辑 +4. I:在当前光标所在行行首开始编辑 +5. o:在当前光标的下一行开始编辑 +6. O:在当前光标的上一行开始编辑 + +##### 3.如何进入 vi 编辑器的可视化模式 + +在Vim命令模式下,输入 v 或者 V 或者 `Ctrl` + v 都可进入可视化模式,这三个Vim可视化模式的主要区别在于: + +- 字符选择模式:选中光标经过的所有字符,普通模式下按小写 v 进入 +- 行选择模式:选中光标经过的所有行,普通模式下按 大写V 进入 +- 块选择模式:选中一整个矩形框表示的所有文本,普通模式下按+v进入 + +##### 4.在 vi 编辑器中如何复制一行 + +在光标的位置按“ **yy** ”,复制当前行 + +##### 5.在 vi 编辑器中如何进行粘贴 + + 在光标的行按“ p ”,粘贴到下一行 + +##### 6.如何删除从 3 行到 15 行的所有数据 + +在Vim中删除一行的命令是`dd` + +###### 删除一行: + +- 按`Esc`键进入正常模式。 +- 将光标放在要删除的行上。 +- 键入`dd`并按Enter键以删除该行。 + +###### 删除多行: + +要一次删除多行,请在dd命令前添加要删除的行数,例如,要删除五行,请执行以下操作: + +- 按`Esc`键进入正常模式。 +- 将光标放在要删除的第一行上。 +- 键入5`dd`并按Enter键以删除接下来的五行 + +###### 删除行范围: + +:[start],[end]d + +例如,要删除从3到5的行,您可以执行以下操作: + +- 按`Esc`键进入正常模式。 +- 输入:3,5`d`,然后按Enter键以删除行。 + +###### 删除所有行: + +要删除所有行,您可以使用代表所有行的%符号或1,$范围: + +- 按`Esc`键进入正常模式。 +- 键入%d,然后按Enter键以删除所有行。 + +您还可以使用以下字符来指定范围: + +.(点)当前行。 + +$ 最后一行。 + +% 所有行。 + +这里有一些例子: + +:.,$d 从当前行到文件末尾。 + +:.,`1d` 从当前行到文件开头。 + +10,$d 从第十行到文件末尾。 + +###### 删除包含模式的行: + +- :g//d +- 全局命令(g)告诉删除命令(d)删除所有包含的行。 +- 要匹配与模式不匹配的行,请在模式之前添加感叹号(!): +- :g!//d + + + +- :g/`foo`/d-删除所有包含字符串“`foo`”的行,它还会删除“`foo`”嵌入较大字词(例如“football”)的行。 +- :g/^$/d 删除所有空白行,模式^$匹配所有空行。 +- :g/^\s*$/d 删除所有空白行,与前面的命令不同,这还将删除具有零个或多个空格字符(\s*)的空白行。 + + + + + +vim练习: + +- 光标移动练习,命令模式下: + + - 单位级 h j k l + - 单词级 w e b + - 块级 gg G 0 ^ $ H M L ngg nj nk + + 把下列句子按照第一句的正确顺序修改好并把多余的空行删除 + + ``` + this is a simple easy vim tutorial + + tutorial simple a easy this vim is + is this tutorial vim simple a easy + + + tutorial vim this is a easy simple + tutorial easy vim simple a this is + simple a vim easy tutorial is this + + tutorial is easy vim a simple this + + + vim simple this tutorial a easy is + a vim tutorial simple easy is this + + + easy a simple vim is tutorial this + vim tutorial is a easy simple this + a this vim tutorial is easy simple + this tutorial simple easy a is vim + + + easy tutorial this simple a is vim + a tutorial easy is this simple vim + + a tutorial vim is easy this simple + simple this easy is vim tutorial a + + this tutorial is a easy simple vim + vim is tutorial simple this easy a + + vim is simple this tutorial easy a + easy a simple is vim this tutorial + vim is tutorial simple a easy this + this vim is tutorial simple easy a + ``` + + 先敲出以下代码,然后修正以下代码中的错误单词、重复单词、错误格式、多余行,修改函数名为 typing 并为定时器添加 300 毫秒延迟 + + ``` + const bbb = () => { + // this is is a description + // + // another descriptttion + const timer = setTimeout(( ) => { + console.log(that) alert('cool!') + // awosome man ! + }) + } + ``` + + ```bash + const bbb = typing() => { + // this is a description + // another description + const timer = setTimeout(( ) => { + console.log(that) alert('cool!',300) + // awosome man ! + }) + } + ``` + + 尝试在下面的文本中进行复制粘贴练习 + + ``` + 删除这一行 dd + 粘贴到这一行下面 yy p + 剪切 ABC 并把它粘贴到 XYZ 前面,使这部分内容看起来像 + 剪切 并把它粘贴到 ABC XYZ 前面。 + ``` + + 尝试修改下列文本的大小写 + + ``` + Change this line to UPPERCASE, THEN TO lowercase. + ``` + + `gu` -- 全部修改为小写 + `gU `-- 全部修改为大写 + + `guw `-- 单词修改为小写 + `gUw `-- 单词修改为大写 + + `gu~ `-- 字符修改为小写 + + 按下面的说明进行操作 + + ``` + 按 dd 删除本行 + 按 . 重复删除操作 + 2. 再删除两行 + 这行也没了 + p 把刚才删掉的粘回来 + 3. 又多出 6 行 + ``` + + 左缩进、右缩进练习 + + ``` + 在这一行上依次按 3>>,<< 和 >:前三行右缩进 + <<:当前行左缩进 +