第二周1

任务 1:文本处理工具的用法

创建一个文件并添加内容,然后演示 cattailmore 等工具的用法。

示例文件:

echo "1" > test.txt
echo "2" >> test.txt
echo "3" >> test.txt
echo "4" >> test.txt

常用命令:

  1. cat

    • 显示文件内容:
      cat test.txt
      
    • 将多个文件内容合并输出:
      cat file1.txt file2.txt > 5.txt
      
  2. tail

    • 显示文件最后几行(默认显示最后 10 行):
      tail test.txt
      
    • 显示文件最后 5 行:
      tail -n 5 test.txt
      
  3. more

    • 分页显示文件内容:
      more test.txt
      
  4. less

    • 类似于 more,但功能更强大:
      less test.txt
      

总结:

  • cat:用于查看文件内容或合并文件。
  • tail:用于查看文件的最后几行。
  • moreless:用于分页查看文件内容。

任务 2:正则表达式语法总结

正则表达式是一种强大的文本匹配工具,用于搜索、替换和验证字符串。

常见语法:

  1. 字符匹配

    • 单个字符:.(匹配任意字符)。
    • 字符集:[abc](匹配 a、b 或 c)。
    • 范围:[a-z](匹配任意小写字母)。
  2. 量词

    • *:匹配前面的字符 0 次或多次。
    • +:匹配前面的字符 1 次或多次。
    • ?:匹配前面的字符 0 次或 1 次。
    • {n,m}:匹配前面的字符 n 到 m 次。
  3. 边界匹配

    • ^:匹配行首。
    • $:匹配行尾。
    • \b:匹配单词边界。
  4. 分组和捕获

    • ():分组。
    • \1\2:捕获分组内容。
  5. 特殊字符

    • \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:程序的组成知识点总结

程序通常由以下部分组成:

  1. 代码:程序的逻辑部分,用某种编程语言编写。
  2. 数据:程序处理的数据,可以是变量、文件或数据库。
  3. 输入:程序从用户或外部设备接收的数据。
  4. 输出:程序运行的结果,可以是屏幕显示、文件或网络传输。
  5. 逻辑:程序的执行流程,包括条件判断、循环和函数调用。

示例

#!/bin/bash
# 程序的输入
read -p "输入数字: " num

# 程序的逻辑
if [ $num -gt 10 ]; then
  echo "大于十"
else
  echo "小于十或者等于十"
fi

任务 5:变量命名规则和不同类型变量的使用

变量命名规则:

  1. 变量名必须以字母开头,不能以数字开头。
  2. 变量名只能包含字母、数字和下划线(A-z, 0-9, _ )。
  3. 变量名是大小写敏感的。

不同类型变量:

  1. 环境变量

    • 全局变量,对所有进程可见。
    • 示例:PATHHOME
    • 设置:export VAR=1
  2. 位置变量

    • 用于脚本参数,如 $1$2 等。
  3. 只读变量

    • 不可修改的变量。
    • 示例:readonly VAR=1
  4. 局部变量

    • 只在当前脚本或函数中有效。
    • 示例:VAR=1
  5. 状态变量

    • 用于存储程序状态,如 $? 表示上一个命令的退出状态。

示例

#!/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
posted @ 2025-03-03 09:47  你好,运维人  阅读(13)  评论(0)    收藏  举报