第二周1
任务 1:文本处理工具的用法
创建一个文件并添加内容,然后演示 cat、tail、more 等工具的用法。
示例文件:
echo "1" > test.txt
echo "2" >> test.txt
echo "3" >> test.txt
echo "4" >> test.txt
常用命令:
-
cat:- 显示文件内容:
cat test.txt - 将多个文件内容合并输出:
cat file1.txt file2.txt > 5.txt
- 显示文件内容:
-
tail:- 显示文件最后几行(默认显示最后 10 行):
tail test.txt - 显示文件最后 5 行:
tail -n 5 test.txt
- 显示文件最后几行(默认显示最后 10 行):
-
more:- 分页显示文件内容:
more test.txt
- 分页显示文件内容:
-
less:- 类似于
more,但功能更强大:less test.txt
- 类似于
总结:
cat:用于查看文件内容或合并文件。tail:用于查看文件的最后几行。more和less:用于分页查看文件内容。
任务 2:正则表达式语法总结
正则表达式是一种强大的文本匹配工具,用于搜索、替换和验证字符串。
常见语法:
-
字符匹配:
- 单个字符:
.(匹配任意字符)。 - 字符集:
[abc](匹配 a、b 或 c)。 - 范围:
[a-z](匹配任意小写字母)。
- 单个字符:
-
量词:
*:匹配前面的字符 0 次或多次。+:匹配前面的字符 1 次或多次。?:匹配前面的字符 0 次或 1 次。{n,m}:匹配前面的字符 n 到 m 次。
-
边界匹配:
^:匹配行首。$:匹配行尾。\b:匹配单词边界。
-
分组和捕获:
():分组。\1、\2:捕获分组内容。
-
特殊字符:
\d:匹配数字。\w:匹配字母或数字。\s:匹配空白字符。
示例:
- 匹配以数字开头的行:
^\d - 匹配邮箱地址:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} - 替换日期格式:
sed -r 's/(\d{2})\/(\d{2})\/(\d{4})/\1-\2-\3/'
任务 3:文本三剑客的总结
1. grep 的用法
grep 是一个强大的文本搜索工具,用于匹配字符串或正则表达式。
常用命令:
- 搜索包含特定字符串的行:
grep "pattern" file.txt - 搜索不包含特定字符串的行:
grep -v "pattern" file.txt - 搜索整个单词:
grep -w "word" file.txt - 使用正则表达式:
grep -E "pattern" file.txt
2. sed 的语法
sed 是一个流编辑器,用于对文本进行替换、删除等操作。
常用命令:
- 替换字符串:
sed 's/old/new/' file.txt - 替换文件内容并保存:
sed -i 's/old/new/' file.txt - 删除每行的第一个字符:
sed -i 's/.//' file.txt
3. awk 的语法
awk 是一个强大的文本处理工具,特别适合处理表格数据。
常用命令:
- 打印每行的第一个字段:
awk '{print $1}' file.txt - 打印每行的第一个和第三个字段:
awk '{print $1, $3}' file.txt - 根据条件过滤行:
awk '$1 > 10' file.txt
任务 4:程序的组成知识点总结
程序通常由以下部分组成:
- 代码:程序的逻辑部分,用某种编程语言编写。
- 数据:程序处理的数据,可以是变量、文件或数据库。
- 输入:程序从用户或外部设备接收的数据。
- 输出:程序运行的结果,可以是屏幕显示、文件或网络传输。
- 逻辑:程序的执行流程,包括条件判断、循环和函数调用。
示例:
#!/bin/bash
# 程序的输入
read -p "输入数字: " num
# 程序的逻辑
if [ $num -gt 10 ]; then
echo "大于十"
else
echo "小于十或者等于十"
fi
任务 5:变量命名规则和不同类型变量的使用
变量命名规则:
- 变量名必须以字母开头,不能以数字开头。
- 变量名只能包含字母、数字和下划线(A-z, 0-9, _ )。
- 变量名是大小写敏感的。
不同类型变量:
-
环境变量:
- 全局变量,对所有进程可见。
- 示例:
PATH、HOME。 - 设置:
export VAR=1。
-
位置变量:
- 用于脚本参数,如
$1、$2等。
- 用于脚本参数,如
-
只读变量:
- 不可修改的变量。
- 示例:
readonly VAR=1。
-
局部变量:
- 只在当前脚本或函数中有效。
- 示例:
VAR=1。
-
状态变量:
- 用于存储程序状态,如
$?表示上一个命令的退出状态。
- 用于存储程序状态,如
示例:
#!/bin/bash
# 环境变量
export MY_VAR="Hello"
# 位置变量
echo "num: $1"
# 只读变量
readonly var="Π"
# var="New Value" # 尝试修改会报错
# 局部变量
LOCAL_VAR="Local"
# 状态变量
ls non_existent_file
echo "Exit status: $?"
任务 6:猜数字脚本
编写一个简单的猜数字脚本,提示用户输入数字,直到猜对为止。
脚本示例:
[root@ansible-ubyntu ~]#cat num.sh
#!/bin/bash
# 猜数字游戏
# 生成一个 1 到 100 的随机数
target=$((RANDOM % 100 + 1))
#输入数字
while true;do
read -p "请输入(1~100):" num
if [ $num -eq $target ] ; then
echo "猜对了"
break;
elif [ $num -lt $target ]; then
echo "小了"
elif [ $num -gt $target ];then
echo "大了"
else echo "请输入数字"
fi
done
运行脚本:
bash num.sh

浙公网安备 33010602011771号