You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed从文本文件随机取词批量替换多站点文件指定内容?

解决方案

场景1:每个文件内的所有"Dashemd"替换为同一个随机单词

用shuf命令直接从Hemd.txt随机取一行单词,结合find和sed批量处理所有目标文件,操作简洁可靠:

脚本实现

#!/bin/bash

# 检查必要文件状态
if [ ! -f "Hemd.txt" ]; then
    echo "错误:Hemd.txt 文件不存在!"
    exit 1
fi

if [ ! -s "Hemd.txt" ]; then
    echo "错误:Hemd.txt 文件为空!"
    exit 1
fi

# 遍历www目录下所有index.html
find ./www -name "index.html" -type f | while read -r file; do
    # 随机获取一个单词
    random_word=$(shuf -n 1 Hemd.txt)
    # 替换目标单词,用#作为分隔符避免/等特殊字符冲突
    sed -i "s#Dashemd#${random_word}#g" "$file"
    echo "已处理:$file"
done

使用步骤

  1. 将代码保存为replace_single_random.sh
  2. 赋予执行权限:chmod +x replace_single_random.sh
  3. 在www目录的上级目录运行脚本:./replace_single_random.sh

场景2:每个"Dashemd"实例替换为不同的随机单词

如果需要让文件中每一处"Dashemd"都替换成不同的随机词,用awk实现逐匹配项替换:

脚本实现

#!/bin/bash

if [ ! -f "Hemd.txt" ]; then
    echo "错误:Hemd.txt 文件不存在!"
    exit 1
fi

if [ ! -s "Hemd.txt" ]; then
    echo "错误:Hemd.txt 文件为空!"
    exit 1
fi

# 把Hemd.txt的单词加载到数组
mapfile -t word_list < Hemd.txt
total_words=${#word_list[@]}

find ./www -name "index.html" -type f | while read -r file; do
    # awk逐行处理,替换每个匹配项为随机词
    awk -v words="${word_list[*]}" -v total="$total_words" '
        BEGIN {
            split(words, arr, " ");
            srand(); # 初始化随机数种子
        }
        {
            while (match($0, /Dashemd/)) {
                rand_idx = int(rand() * total) + 1;
                $0 = substr($0, 1, RSTART-1) arr[rand_idx] substr($0, RSTART+RLENGTH);
            }
            print $0;
        }' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
    echo "已处理:$file"
done

补充说明

  • 若系统没有shuf命令(如部分老旧Linux发行版),可用以下代码替代随机取词逻辑:
    total_lines=$(wc -l < Hemd.txt)
    random_line=$((RANDOM % total_lines + 1))
    random_word=$(sed -n "${random_line}p" Hemd.txt)
    
  • 如需忽略大小写匹配(同时替换dashemd、Dashemd等),将sed命令的g改为gi,awk中的正则改为/Dashemd/i。

内容的提问来源于stack exchange,提问作者Daily World Live

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:45:34