mac中使用sh脚本去除文件中的html标签并生成新文件

利用sed命令

bash 复制代码
#!/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"

使用方式

  1. 给这个脚本文件执行权限,使用命令 chmod +x remove_html.sh
  2. 运行脚本并传递包含HTML的文件名作为参数,例如 ./remove_html.sh example.html

解析

  • 脚本首先检查是否有文件名作为参数传入。
  • 定义输入文件和输出文件的名称,输出文件名基于输入文件名,但是会在文件扩展名前加上 _no_html
  • 使用sed命令去除输入文件中的所有HTML标签,正则表达式 <[^>]*> 用于匹配任何在尖括号内的字符。
  • 处理后的文本保存在新文件中。

如果想保留空格和换行

修改sed逻辑

bash 复制代码
#!/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
  • optionssed命令的选项,比如-i用于直接修改文件内容,而不是输出到标准输出。
  • command :要执行的sed命令,如替换、删除等。
  • file_name:要处理的文件名。

常用命令

  1. 替换文本

    复制代码
    sed 's/原字符串/新字符串/' file

    这里的s表示替换操作。默认情况下,只有每行中的第一个匹配项会被替换。如果要替换所有匹配项,可以加上g标志:

    复制代码
    sed 's/原字符串/新字符串/g' file
  2. 删除行

    复制代码
    sed 'nd' file

    这里的n是行号,d表示删除操作。例如,删除第三行:

    复制代码
    sed '3d' file
  3. 插入和追加文本

    • 插入(在指定行之前):

      复制代码
      sed 'n i\插入的文本' file
    • 追加(在指定行之后):

      复制代码
      sed 'n a\追加的文本' file
  4. 选择性打印行 : 使用-n选项和p命令可以打印特定的行:

    bash

    复制代码
    sed -n 'p' file  # 没有实际效果,因为它会打印所有行
    sed -n '5p' file # 只打印第五行
  5. 使用正则表达式sed可以结合正则表达式使用,提高命令的灵活性和强大功能:

    复制代码
    sed -n '/pattern/p' file  # 打印所有匹配正则表达式pattern的行

进阶用法

  • 多点编辑sed支持在一次命令中执行多个编辑操作,操作之间用分号分隔:

    复制代码
    sed 's/原字符串1/新字符串1/; s/原字符串2/新字符串2/' file
  • 直接修改文件 : 使用-i选项可以直接修改文件内容,而不是将结果输出到标准输出:

    复制代码
    sed -i 's/原字符串/新字符串/g' file
相关推荐
七牛开发者2 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
@大迁世界3 小时前
43.HTML 事件处理和 React 事件处理有什么区别?
前端·javascript·react.js·html·ecmascript
ZC跨境爬虫4 小时前
跟着 MDN 学 HTML day_38:(DocumentFragment 文档片段接口详解)
前端·javascript·ui·html·音视频
扬帆破浪6 小时前
免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:macOS首次启动报无法验证 开发者签名与公证的现实做法
人工智能·macos·开源·知识图谱
irpywp7 小时前
合盖断网打断后台计算,Modafinil:一款防休眠菜单栏工具,让 Mac 闭眼继续跑 Agent
macos·ios·开源·github
容智信息8 小时前
AI Agent(智能体)的输出格式应该从 Markdown 转向 HTML吗?
前端·人工智能·rust·编辑器·html·prompt
忧云9 小时前
开源 SSH 客户端 Netcatty:免费替代 Termius,带 AI 的现代化运维工具
运维·开源·ssh
ZC跨境爬虫10 小时前
跟着 MDN 学 HTML day_40:(DOMImplementation 接口完全解析)
前端·ui·html·媒体
云水一下10 小时前
黑客的“猜密码”游戏:SSH暴力破解实战与Linux安全加固
linux·渗透测试·ssh·暴力破解
ZC跨境爬虫10 小时前
跟着 MDN 学 HTML day_39:(DOMException 异常接口完全解析)
前端·javascript·html·媒体