如何使用AWK中另一个变量的长度分配重复字符变量?

时间:2020-09-13 11:17:27

标签: string bash awk

我想要一个变量,其长度为变量.的重复spacepat,我已经尝试了以下命令

awk -v pat="AAGCTT" -v rep=$("printf '.%.0s' length(pat)")
awk -v pat="AAGCTT" -v rep=$("printf '.%.0s' {1..length(pat)}")

some actions using both pat & rep as variable

但是输出了以下错误

printf '.%.0s' {1..length(pat)}: command not found

如何生成所需的变量?

2 个答案:

答案 0 :(得分:3)

您可以使用:

var=$(awk -v pat="AAGCTT" 'BEGIN { printf "%*s", length(pat), "" }')
echo "${#var}"
6

您可以执行printf并重用gsub来代替rep

var=$(awk -v pat="AAGCTT" -v rep="." 'BEGIN {
gsub(/./, rep, pat); print pat}')

答案 1 :(得分:0)

我找到了一种分配rep并重复X字符length(pat)

awk -v pat="AAGCTT" -v rep="X" 'BEGIN {var = pat;gsub(/./,rep,var);} {
    some action
}'

其中

pat = "AAGCTT"
rep = "X"
var = "XXXXXX"