awkのBash変数

awkのBash変数

ch.shにはbash変数がたくさんあります。

$ cat ch.sh
BBG=`tput setab 0`
RBG=`tput setab 1`
GBG=`tput setab 2`
.
.
.
$ cat abc
asd
bsd
csd
.
.
.

各変数を宣言せずにawkからアクセスしたいですawk -v。どのような方法がありますか?私はこれを試しました

source ch.sh
awk `
#Let s[asd]="B"
ta=s[$0] "BG" #s is awk array sowehow created by other file
#colour print of line in abc
` abc

いくつかの方法を提案してください。

ベストアンサー1

このエラーが発生したと思うようですが、実際に持っているのはファイルのペアだけなtag="value"ので、ch.sh次のことを試してみてください。

$ echo 7 |
awk '
    NR==FNR {
        tag = val = $0
        sub(/[[:space:]]*=.*/,"",tag)
        gsub(/^[^=]+=[[:space:]]*"?|"?[[:space:]]*$/,"",val)
        ch[tag] = val
        next
    }
    {
        tag = "var2"
        print ch[tag], $0
    }
' ch.sh -
zsd 7

これが必要なものではない場合は、質問を編集して何をしたいかを示すbash + awkコードの最小限の例を提供してください。

おすすめ記事