diff --git "a/\345\224\220\345\233\275\344\272\256/20240530 \346\226\207\344\273\266\346\237\245\347\234\213\347\273\203\344\271\240.md" "b/\345\224\220\345\233\275\344\272\256/20240530 \346\226\207\344\273\266\346\237\245\347\234\213\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..fd0fc665a2d639e158b581431d1e211d30f68490 --- /dev/null +++ "b/\345\224\220\345\233\275\344\272\256/20240530 \346\226\207\344\273\266\346\237\245\347\234\213\347\273\203\344\271\240.md" @@ -0,0 +1,165 @@ +## 笔记 + +``` +cat:从文件头部显示文件内容(正向显示) + +tac:从文件尾部开始显示内容(逆向显示) + +more:分页显示文件内容 + +less:与more类似,但提供了更多的导航和搜索功能 +搜索:在less命令中 /+字符 + +head:显示文件开头的内容(默认10行)。 +head -n 行数 文件名 + +tail:显示文件结尾的内容(默认10行)。 +tail -n 行数 文件名 + +nl:显示文件内容,并添加行号。 +``` + +## 作业 + +**以下所有操作都在家目录执行:** + +### + +1. **操作题一**:使用 `cat` 命令显示 `/etc/passwd` 文件的内容。 + + ``` + cat /etc/passwd + ``` + +2. **操作题二**:将文件 `/etc/passwd` 的内容复制到 `passwd_bak.txt` 文件中,但不使用 `cp` 命令。 + + ``` + cat passwd > passwd_bak.txt + ``` + +3. **操作题三**:新建两个文件 `file1.txt` 和 `file2.txt`,分别写一些不同的内容,再将这两个文件的内容合并到一个新的文件 `file3.txt` 中。 + + ``` + mkdir file1.txt file2.txt + cat file1.txt file2.txt > file3.txt + ``` + +### + +1. 使用命令从尾部开始显示 `bigfile.txt` 文件的内容。 + + ``` + tac bigfile.txt + ``` + +2. 尝试找出 `bigfile.txt` 文件的最后一行内容,要使用 `tac` 命令。 + + ``` + tac bigfile.txt | head -n 1 + ``` + +3. 查看 `bigfile.txt` 文件的最后5行内容。 + + ``` + cat bigfile.txt | tail -n 5 + ``` + +4. 倒序查看 `bigfile.txt` 文件的最后5行内容。 + + ``` + tac bigfile.txt | head -n 5 + ``` + +### + +1. **操作题一**:使用 `more` 命令查看 `bigfile.txt` 文件的内容,并在查看过程中使用空格键翻页。 + + ``` + more bigfile.txt + ``` + +2. **操作题二**:在 `more` 命令的查看过程中,如何使用回车键来逐行查看文件内容? + + ``` + 用手按回车(enter) + ``` + +3. **操作题三**:如何在 `more` 命令中搜索`bigfile.txt`特定字符串(例如 "error")并跳转到下一个匹配项? + + ``` + more bigfile.txt + /error + ``` + +### `less` 命令操作题 + +1. **操作题一**:使用 `less` 命令查看 `bigfile.txt` 文件,并快速定位到文件的末尾。 + + ``` + less bigfile.txt + 按空格到末尾 + ``` + +2. **操作题二**:在 `less` 命令中,如何向上和向下滚动文件内容? + + ``` + 上下方向键 + pageup pagedown + ``` + +3. **操作题三**:在 `less` 命令中,如何搜索`bigfile.txt`一个特定的函数名(例如 `def my_function`),并查看所有匹配项? + + ``` + less bigfile.txt + /def my_function + B 上一个匹配 + N 下一个匹配 + ``` + +### `head` 命令操作题 + +1. **操作题一**:使用 `head` 命令显示 `bigfile.txt` 文件的前5行内容。 + + ``` + head bigfile.txt -n 5 + ``` + +2. **操作题二**:将 `bigfile.txt` 的前20行内容保存到 `bigfile_20.txt` 文件中。 + + ``` + head bigfile.txt -n 20 > bigfile_20.txt + ``` + +3. **操作题三**:如何结合 `head` 和 `grep` 命令来查找 `bigfile.txt` 文件中以 "A" 开头的前10行? + + ``` + grep "A" bigfile.txt | head -n 10 + ``` + +### `tail` 命令操作题 + +1. **操作题一**:使用 `tail` 命令显示 `bigfile.txt` 文件的最后20行内容。 + + ``` + tail -n 20 bigfile.txt + ``` + +2. **操作题二**:如何实时跟踪一个正在写入的日志文件(如 `bigfile.txt`)的最后10行内容? + + ``` + tail -f bigfile.txt + ``` + +3. **操作题三**:在 `tail` 命令中,如何反向显示文件的最后10行内容(即按从旧到新的顺序显示)? + + ``` + tail -fn 10 bigfile.txt + ``` + +### 综合题 + +**综合题**:假设你有一个非常大的日志文件 `bigfile.txt`,你需要找出所有包含 "ERROR" 字符串的行,并查看这些行及其之前的两行内容。 + +``` +cat bigfile.txt | grep "ERROR" -b2 +``` \ No newline at end of file diff --git "a/\345\224\220\345\233\275\344\272\256/20240602sed.md" "b/\345\224\220\345\233\275\344\272\256/20240602sed.md" new file mode 100644 index 0000000000000000000000000000000000000000..c0a6eb287cb5e3be3012e0adf248f1efe0622ce2 --- /dev/null +++ "b/\345\224\220\345\233\275\344\272\256/20240602sed.md" @@ -0,0 +1,126 @@ +### exam.txt 文件内容: + +### vim exam.txt + +```js +This is a text file for practice. +It contains some words like dog, cat, and bird. +There are also numbers like 123 and 456. +# heihei +We will use sed to manipulate this file. +``` + +#### 修改操作 + +1. 使用 `sed` 将文件 `exam.txt` 中所有的 "dog" 替换为 "cat",并将结果输出到标准输出。 + + +```js +sed 's/dog/cat/g' exam.txt +``` + +1. 使用 `sed` 将文件 `exam.txt` 中所有的 "123" 替换为 "OneTwoThree",并将结果保存到新文件 `updated_exam.txt` 中。 + +```js +sed 's/123/OneTwoThree/g' exam.txt > updated_exam.txt +``` + +#### 删除操作 + +1. 使用 `sed` 删除文件 `exam.txt` 中所有以 "#" 开头的注释行,并将结果输出到标准输出。 + +```js +sed '/#/d' exam.txt +``` + +1. 使用 `sed` 删除文件 `exam.txt` 中所有包含 "words" 的行,并将结果保存到新文件 `clean_exam.txt` 中。 + +```js +sed '/words/d' exam.txt > clean_exam.txt +``` + +#### 插入操作 + +1. 使用 `sed` 在文件 `exam.txt` 的第2行插入一行 "Welcome to sed manipulation",并将结果保存到新文件 `updated_exam.txt` 中。 + +```js + sed '2a\Welcome to sed manipulation' exam.txt > updated_exam.txt +``` + +1. 使用 `sed` 在文件 `exam.txt` 的`numbers`所在行插入一行 "This is a new line",并将结果输出到标准输出。 + +```js +sed 'a/numbers/This is a new line' exam.txt +``` + + + +#### 追加操作 + +1. 使用 `sed` 在文件 `exam.txt` 的末尾追加一行 "End of practice",并将结果保存到新文件 `updated_exam.txt` 中。 + +```js +sed '1a/$/End of practice' exam.txt > updated_exam.txt +``` + +1. 使用 `sed` 在文件 `exam.txt` 的每一行末尾追加内容 " - 2024-05-31",并将结果输出到标准输出。 + +```js +sed 'a/$/2024-05-31' exam.txt +``` + +#### 整行替换操作 + +1. 使用 `sed` 将文件 `exam.txt` 中所有以字母 "W" 开头的行替换为 "Not Available",并将结果输出到标准输出。 + +```js +sed '/w/i\Not Available' exam.txt +``` + +1. 使用 `sed` 将文件 `exam.txt` 中所有包含 "words" 的行替换为 "Replaced",并将结果保存到新文件 `updated_exam.txt` 中。 + +```js +~$ sed '/words/c/Replaced' exam.txt>updated_exam.txt + +``` + +#### 多命令操作 + +1. 使用 `sed` 删除文件 `exam.txt` 中`dog`所在行,`file`换成`文件`,并将结果输出到标准输出。 + +```js +sed '/dog/d; s/file/文件/g' exam.txt +``` + +1. 使用 `sed` 将文件 `exam.txt` 中,删除空白行并将所有以 "It" 开头的行替换为 "This", + +```js +sed '/^$/;s/^It/This/' exam.txt 不会看别人的 +``` + +#### 脚本文件操作 + +1. 创建一个 `sed` 脚本文件 `replace_apple_with_orange.sed`,实现将文件 `exam.txt` 中所有 "apple" 替换为 "orange" 的功能,并将结果输出到标准输出。 + +```js +echo 's/apple/orange/g' > replace_apple_with_orange.sed +``` + +运行脚本: + +```js +sed -f replace_apple_with_orange.sed exam.txt +``` + +1. 创建一个 `sed` 脚本文件 `remove_blank_lines.sed`,实现删除文件 `exam.txt` 中所有空白行的功能,并将结果保存到新文件 `cleaned_exam.txt` 中。 + +```js +echo '/^$/d' > remove_blank_lines.sed +``` + +运行脚本: + +```js +sed -f remove_blank_lines.sed exam.txt > cleaned_exam.txt +``` +