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

使用Bash-Awk/Sed实现文件字符串列表与单个字符串拼接

我来给你几个实用的解决方案,用Awk和Bash都能轻松实现你要的字符串拼接需求:

使用Awk实现(推荐,简洁高效)

Awk天生擅长处理文本字段,这个方案先把File1的所有字符串存起来,再逐个用File2的前缀拼接:

awk '
# 处理第一个输入文件File1,把每个字符串存入数组
NR == FNR {
    for (i=1; i<=NF; i++) {
        strs[++count] = $i
    }
    next
}
# 处理第二个输入文件File2
{
    # 初始化当前行的输出内容
    result = ""
    # 遍历File2的每个前缀
    for (j=1; j<=NF; j++) {
        prefix = $j
        # 把前缀和每个File1的字符串拼接
        for (k=1; k<=count; k++) {
            result = result (result ? " " : "") prefix strs[k]
        }
    }
    # 输出最终拼接结果
    print result
}' File1.txt File2.txt > output.txt

代码说明:

  • NR == FNR:Awk的常用技巧,用来识别第一个输入文件(这里是File1),把它的每个字段(空格分隔的字符串)存入数组strs。
  • 处理File2时,遍历每个前缀,再和strs里的所有字符串拼接,最后把所有拼接结果连成一行输出,自动避免末尾多余空格。
使用Bash原生命令实现

如果你更倾向于用纯Bash脚本,也可以通过数组和循环来完成:

# 把File1的内容读入数组(空格分隔)
read -ra file1_strings < File1.txt

# 把File2的内容读入数组
read -ra file2_prefixes < File2.txt

# 初始化输出变量
output=""

# 遍历每个前缀
for prefix in "${file2_prefixes[@]}"; do
    # 遍历File1的每个字符串,拼接后加入输出
    for str in "${file1_strings[@]}"; do
        output+="${prefix}${str} "
    done
done

# 去掉末尾多余的空格,写入输出文件
echo "${output% }" > output.txt

代码说明:

  • read -ra:把文件内容按空格分割成数组元素,-r避免转义字符被解析,-a指定存入数组。
  • ${output% }:Bash的参数扩展语法,用来去掉变量末尾的空格,保证输出格式整洁。

测试验证

用你给出的示例输入:

File1.txt内容:asa exe dada 123 3456 nani example lol
File2.txt内容:Rexample Example

运行任意一个脚本后,output.txt会生成你期望的结果:
Rexampleasa Rexampleexe Rexampledada Rexample123 Rexample3456 Rexamplenani Rexampleexample Rexamplelol Exampleasa Exampleexe Exampledada Example123 Example3456 Examplenani Exampleexample Examplelol

内容的提问来源于stack exchange,提问作者rang runera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:56:21