あなたがやろうとしていることは、awkorとは何の関係もありませんsed。たとえば、次を参照してください。
print " '\'' data_between_two_single_quotes '\'' "
最初の文字は、開始シェル文字列リテラルを'閉じます。'シェル リテラルは、このためのバックスラッシュ エスケープをサポートしていません。'\''一重引用符リテラルを閉じ、(一重引用符リテラルの外でサポートされているエスケープを使用して) 引用文字を指定してから、新しい一重引用符リテラルを再度開きます。一重引用符を取得するための 4 文字のエスケープ シーケンスと考えることができます。
したがって、awkコマンドは次のようになります。
awk '/\('\''Backup/ {print " ('\''Drop the no good white.cap ;'\'' ) , " } { print }' filename.sh
sedコマンドは次のようになります。
sed -e '/\('\''Backup/i\
('\''Drop the no good white.cap ;'\'' ) , ' filename.sh
編集:
for i in *; do awk -v database="$DB" -v table="$TB" 'BEGIN { print "header" } /backup/ { print " ('\''DROP TABLE " database "." table ";'\'' ) , " }1' "$i" > "${i}.new"; done
説明:
シェルforループを使用して、ディレクトリ内のすべてのファイルをループします。ブロックを含むファイルにヘッダーを追加しますBEGIN。単語を見つけて、シェル変数とbackupを含む行を出力します。スクリプトの最後で、デフォルトで印刷を有効にします。の省略形です。HTH。DBTB... }1'awk{ print }