利用sed命令
#!/bin/bash
# 检查是否提供了输入文件
if [ $# -eq 0 ]; then
    echo "Usage: $0 <filename>"
    exit 1
fi
input_file=$1
output_file="${input_file%.*}_no_html.${input_file##*.}"
# 使用sed去除HTML标签
sed 's/<[^>]*>//g' $input_file > $output_file
echo "HTML tags have been removed. Output is in $output_file"使用方式
- 给这个脚本文件执行权限,使用命令 chmod +x remove_html.sh。
- 运行脚本并传递包含HTML的文件名作为参数,例如 ./remove_html.sh example.html。
解析
- 脚本首先检查是否有文件名作为参数传入。
- 定义输入文件和输出文件的名称,输出文件名基于输入文件名,但是会在文件扩展名前加上 _no_html。
- 使用sed命令去除输入文件中的所有HTML标签,正则表达式<[^>]*>用于匹配任何在尖括号内的字符。
- 处理后的文本保存在新文件中。
如果想保留空格和换行
修改sed逻辑
#!/bin/bash
# 检查是否提供了输入文件
if [ $# -eq 0 ]; then
    echo "Usage: $0 <filename>"
    exit 1
fi
input_file=$1
output_file="${input_file%.*}_no_html.${input_file##*.}"
# 使用sed去除HTML标签,保留空格和换行
sed 's/<[^>]*>//g' $input_file > $output_file
echo "HTML tags have been removed while preserving spaces and newlines. Output is in $output_file"sed命令解析
sed(stream editor)是一种在Linux和Unix系统中非常强大的文本处理工具。它主要用于对文本数据的编辑工作,可以用来快速地进行文本替换、插入、删除等多种操作。
基本语法
sed的基本语法格式:
sed [options] 'command' file_name- options:sed命令的选项,比如-i用于直接修改文件内容,而不是输出到标准输出。
- command:要执行的sed命令,如替换、删除等。
- file_name:要处理的文件名。
常用命令
- 替换文本: - sed 's/原字符串/新字符串/' file- 这里的 - s表示替换操作。默认情况下,只有每行中的第一个匹配项会被替换。如果要替换所有匹配项,可以加上- g标志:- sed 's/原字符串/新字符串/g' file
- 删除行: - sed 'nd' file- 这里的 - n是行号,- d表示删除操作。例如,删除第三行:- sed '3d' file
- 插入和追加文本: - 插入(在指定行之前): sed 'n i\插入的文本' file
- 追加(在指定行之后): sed 'n a\追加的文本' file
 
- 插入(在指定行之前): 
- 选择性打印行: 使用 - -n选项和- p命令可以打印特定的行:- bash - sed -n 'p' file # 没有实际效果,因为它会打印所有行 sed -n '5p' file # 只打印第五行
- 使用正则表达式: - sed可以结合正则表达式使用,提高命令的灵活性和强大功能:- sed -n '/pattern/p' file # 打印所有匹配正则表达式pattern的行
进阶用法
- 多点编辑: - sed支持在一次命令中执行多个编辑操作,操作之间用分号分隔:- sed 's/原字符串1/新字符串1/; s/原字符串2/新字符串2/' file
- 直接修改文件: 使用 - -i选项可以直接修改文件内容,而不是将结果输出到标准输出:- sed -i 's/原字符串/新字符串/g' file