前提・実現したいこと
以下のようにyolov4-tiny.cfgをsedで書き換えたいです。
書き換えたい部分はfilters
とclasses
です。
変数を使用したいのですが、
1.以下の「書き換え後」のように、変数そのもので書き換えられてしまします。
2.下の「書き換えたい値」のように書き換えたいです
方法があったらご教授お願いします
書き換えのsedコマンド(sed.sh)
zsh
1# /bin/sh 2CLAESES=3 3FIL=(CLAESES+5)*3 4mv yolov4-tiny.cfg yolov4-tiny.cfg.bak 5cat yolov4-tiny.cfg.bak | sed -e 's/filters=255/filters=${FIL}/g' -e 's/classes=80/classes=${CLAESES}/g' > yolov4-tiny.cfg 6rm *bak 7
書き換える前の部分
zsh
1filters=255 2activation=linear 3 4[yolo] 5mask = 1,2,3 6anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 7classes=80
書き換え後
zsh
1filters=${FIL} 2activation=linear 3 4[yolo] 5mask = 1,2,3 6anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 7classes=${CLAESES}
書き換えたい値
zsh
1filters=24 2activation=linear 3 4[yolo] 5mask = 1,2,3 6anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 7classes=3
###追記
ダブルクオーテーションで囲んだら以下のようにFILが上手く計算結果を反映してくれません。
どうしたらFILの変数も「書き換えたい値」のように書き換えることが可能でしょうか?
訂正したcfg.sh
zsh
1# /bin/sh 2CLAESES=3 3FIL=(${CLAESES}+5)*3 4mv yolov4-tiny.cfg yolov4-tiny.cfg.bak 5cat yolov4-tiny.cfg.bak | sed -e "s/filters=255/filters=${FIL}/g" -e "s/classes=80/classes=${CLAESES}/g" > yolov4-tiny.cfg 6rm *bak
実行結果
zsh
1filters=(3+5)*3 2activation=linear 3 4[yolo] 5mask = 1,2,3 6anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 7classes=3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/21 23:42
2021/07/21 23:53
2021/07/22 00:13
2021/07/22 00:29