行の終わりからファイルをトリミングしようとしているシェルスクリプトがありますが、常にエラーが発生します。
シェルスクリプト:
AWK_EXPRESSION='{if(length>'"$RANGE1"'){ print substr('"$0 "',0, length-'"$RANGE2"'}) } else { print '"$0 "'} }'
for report in ${ACTUAL_TARGET_FOLDER}/* ; do
awk $AWK_EXPRESSION $report > $target_file
done
AWKコマンドをトリガーすると、unexpected newline or end of string
印刷に近づきます。
何が足りないのかわからないので、ご案内ください!!
シェルから変数を補間するのではなく、AWK変数を使用してAWKプログラムを作成することをお勧めします。-v
コマンドラインオプションを使用して、コマンドラインで変数をawkに渡すことができます。
また、awkでは、他のプログラミング言語と同じように、空白を使用してプログラムを読みやすくすることができます。このような:
AWK_EXPRESSION='{
if (length > RANGE1) {
print substr($0, 1, length-RANGE2)
} else {
print
}
}'
for report in "${ACTUAL_TARGET_FOLDER}"/* ; do
awk -v RANGE1="$RANGE1" -v RANGE2="$RANGE2" "$AWK_EXPRESSION" "$report" > "$target_file"
done
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加