awkのversionを上げ(てしまっ)たらwarningが出てしまう件

f:id:hige_dev:20210605154948p:plain

タイトルの通り。windows(wsl2)での開発環境を構築し始めてて、なんらかのコマンドでawkのversionが上がってしまって、以下のwarnがでるようになってしまった。(たぶん $ apt update -y かな、、?)

warningなので、実行はできるものの、毎回出てくるの気持ち悪い。

調べると、awkは2019年に8年ぶりのメジャーアップデートをしたとのこと。その流れでubuntuのupgradeでversionが上がってしまった、のかな?

awkのversionは、

$ awk -V
GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)
...

awkのwarning内容

awk: cmd. line:1: warning: regexp escape sequence `\"' is not a known regexp operator

まさにこれが全てで、ダブルクオートをバックスラッシュでエスケープしないでね、ということらしい。

なので、

"\"asd\": """asd": "

にしてね、ということらしい。

対処法

最初は英語のサイトしか出てこなかったからawkのダウングレードしようかと思ったのだけど、(初心者感)

The issue isn't going to go away in a future release. Change your code. warning: regexp escape sequence `\"' is not a known regexp operator

とのことだったので、コードを直すことにした。

コマンドは、以下の自作コマンド。 hige-dev.hatenablog.com

確かにむっちゃ使ってる。

該当部分を抜き出すと、

 awk ' $1 == "\"AccessKeyId\":" { gsub(/\"/,""); gsub(/,/,""); print "export AWS_ACCESS_KEY_ID="$2 } $1 == "\"SecretAccessKey\":" { gsub(/\"/,""); gsub(/,/,""); print "export AWS_SECRET_ACCESS_KEY="$2} $1 == "\"SessionToken\":" { gsub(/\"/,""); gsub(/,/,""); print "export AWS_SESSION_TOKEN="$2 } '

awsコマンドで取得したaccess_keyなどを、環境変数にセットしてくれるやつ。

この中から、ダブルクオートをバックスラッシュでエスケープしてるやつを削除してやる、と上手くいった。

‘‘‘sh awk ' $1 == ""AccessKeyId":" { gsub(/"/,""); gsub(/,/,""); print "export AWS_ACCESS_KEY_ID="$2 } $1 == ""SecretAccessKey":" { gsub(/"/,""); gsub(/,/,""); print "export AWS_SECRET_ACCESS_KEY="$2} $1 == ""SessionToken":" { gsub(/"/,""); gsub(/,/,""); print "export AWS_SESSION_TOKEN="$2 } '

あれ、、思ったよりもスムーズにできてしまった。。書きながら試行錯誤するかと思ったのだけれども。

まあいいか、成長だ。

### TODO
awkとsed、絶対シェルスクリプトで役立つから勉強したいな。。vimtutorみたいなチュートリアルないかな。。

---

あった。ingurisshu。。やったらあ!

[https://www.tutorialspoint.com/awk/awk_overview.htm:embed:cite]