bash - 1 つのファイル内の列をシェル スクリプト変数に置き換え、awk ステートメントで列の一部である二重引用符を保持する方法

okwaves2024-01-25  11

ファイル内の行:

where so.name ="tblname"

シェル スクリプト変数は次のように設定されています:

for tablename in `cat $TBLNAME.$DBNAM.out`

シェル スクリプトの awk ステートメント:

awk -v xy="$tablename" '=="where"{='\"xy\"'}1' $COLMNAME > tmp2 && mv tmp2 $COLMNAME

awk ステートメントの実行後の出力ファイル内の行:

where so.name = xy

私が欲しいのは:

where so.name = "tbuser"

1

シェル スクリプト全体をコピーしてshellcheck.netに貼り付け、表示される問題を修正する必要があります。

– エド・モートン

2020 年 9 月 3 日 22:54



------------------------

内部の二重引用符を (一重引用符を使用せずに) エスケープする必要があります。

awk -v xy="$tablename" '=="where"{="\""xy"\""}1' file

0

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。