利用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"
使用方式
- 给这个脚本文件执行权限,使用命令
chmod +x remove_html.sh
。 - 运行脚本并传递包含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
- 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