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

awk如何单次匹配替换两字符串并保留指定数组机制输出到单文件

错误原因

sub() 函数标准语法为 sub(匹配正则, 替换内容, [可选目标字符串]),最多仅支持3个参数,单次调用只能完成一种模式的替换,你传入4个参数自然会报参数数量错误。

可行方案

不需要多次调用awk进程,也不需要多次写入目标文件,在同一个awk逻辑内分别调用两次sub()即可,完全保留你要求的索引计算机制,代码如下:

awk \
'FNR==1 {++f}
f==1 {a[i++]=$0}
f==2 {
    sub(/dog/, a[int((h++)%(0.5*2)/1)+1])
    sub(/sun/, a[int((j++)%(0.5*2)/1)+2])
    print > "single.txt"
}' \
anti-dog-sun.txt dog.txt

运行后生成的single.txt内容完全符合预期:

school
cat
moon

内容的提问来源于stack exchange,提问作者7beggars_nnnnm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:06