使用 prinf 函数来获取重复模式

使用 prinf 函数来获取重复模式

我有一些代码,它们将模式附加到文本文件中,并根据用户的输入进行操作,如下所示;

echo -n "WHICH STATIONS?"
read station
awk -v input="$station" '
 BEGIN {
        n = split(tolower(input), user)     
         pattern=  "force %-4s npos 0. .0001\n"       
    }
    {print}
    /<< write after this line >>/ {
        for (i=1; i<=n; i++)
             printf pattern, user[i]
        exit
    }
' ./data > data_2

假设用户的输入abcd ab12然后命令附加到下面几行;

force abcd npos 0. .0001
force ab12 npos 0. .0001

我需要为每个输入添加epos字符串,upos以便将其分成几行,如下所示(对于与上面示例相同的输入);

force abcd npos 0. .0001
force abcd epos 0. .0001
force abcd upos 0. .0001
force ab12 npos 0. .0001
force ab12 epos 0. .0001
force ab12 upos 0. .0001

我如何修改pattern将这些行附加到数据文件中的选项?

答案1

根据您提供的信息,我理解如下:

awk -v input="$station" '
BEGIN {
    n = split(tolower(input), user)     
     pattern=  "force %-4s npos 0. .0001\n"       
}
{print}
{
    for (i=1; i<=n; i++){
         print "force " user[i] " epos 0. .0001" 
         print "force " user[i] " upos 0. .0001" 
   }
}
' data

for每个用户的循环中epos,字符串upos都会根据您的要求进行打印。

相关内容