如何在不使用Echo的情况下尴尬或grep变量



我正在使用大变量,并且要加快我想在不使用 echo/printf

的情况下 awkgrep的脚本

我尝试了什么:

awk "/test/ {for(i=1; i<=100; i++) {getline; print}}" "$var"
awk: fatal: cannot open file `<<$var content>>' for reading (No such file or directory)
grep -A 100 test "$var"
grep: `<<$var content>>': No such file or directory

在bash中,您可以使用单行Heredoc从变量重定向到Stdin:

awk "/test/ {for(i=1; i<=100; i++) {getline; print}}" <<< "$var"

如果我了解您,则在Shell变量var中存储了一个多行字符串,并且您想从该字符串包含该字符串中包含test的行中打印100行。gnu尴尬是:

$ awk -v var="$var" 'BEGIN{ printf "%s", gensub(/.*(test([^n]*n){100}).*/,"\1","",var) }'

例如。要打印"测试"加上2或3行,包括:

$ echo "$var"
abc
def
test
ghi
klm
nop
$ awk -v var="$var" 'BEGIN{ printf "%s", gensub(/.*(test([^n]*n){2}).*/,"\1","",var) }'
test
ghi
$ awk -v var="$var" 'BEGIN{ printf "%s", gensub(/.*(test([^n]*n){3}).*/,"\1","",var) }'
test
ghi
klm

对于其他尴尬,您可以使用Match() substr()获得相同的结果。

相关内容

  • 没有找到相关文章

最新更新