如何为gsub使用动态字段值?

问题描述 投票:0回答:1

我有一个用例,其中我需要用某些字符串替换某些字段的值。必须在运行时从配置文件中提取字段值,并且应使用“ X”替换该字段中的每个字符。

输入:你好〜| *世界好消息〜| *再见

输出:你好〜| * XXXXX好〜| * XXX

为此,我正在使用以下命令

awk -F "~\|\*" -v OFS="~|*" '{gsub(/[a-zA-Z0-9]/,"X",$ordinal_position)}1' $temp_directory/$file_basename

这里,我想在要使用字段编号的地方使用ordinal_position变量。

我已经在下面的命令中尝试过,但是无法正常工作。

awk -F '~\|\*' -v var="$"25 -v OFS='~|*' '{gsub(/[a-zA-Z0-9]/,"X",var)}1' $temp_directory/$file_basename
shell unix awk gsub
1个回答
0
投票

将字段号作为整数传递,并将其包含在$()中以在awk程序中引用该字段。

awk -F '~\|\*' -v var=25 -v OFS='~|*' '{gsub(/[a-zA-Z0-9]/,"X",$(var))}1' $temp_directory/$file_basename
© www.soinside.com 2019 - 2024. All rights reserved.