awk gsub 使用变量进行模式匹配

ddj*_*n11 5 linux awk

gsub(pattern, replacement, target): 允许一个变量用于pattern,但不允许我做正则表达式。

gsub(/pattern/, replacement, target): 让我做正则表达式,但我不能为pattern.

有没有办法同时使用可变模式和正则表达式gsub?我想坚持使用 awk,没有 sed 或 shell。

Ben*_* W. 1

可以使用包含正则表达式的变量:

$ awk 'BEGIN { re = "[abc]" } { gsub(re, "X"); print }' <<< '1a2b3c'
1X2X3X
Run Code Online (Sandbox Code Playgroud)

但引用可能会变得复杂,请参阅gawk 手册中的使用动态正则表达式。