如何在bash脚本中使用awk来逃避单引号

时间:2017-01-04 16:18:37

标签: bash awk

这是我到目前为止所做的,尝试了多种方法,但无法做到恰到好处。 我的目标是在从文本文件

输入mysql时清理输入以防止出现问题
cat 'file.txt' | awk '{gsub(/'"'"'/, '.') ; print $0}' > 'file_sanitized.txt'

4 个答案:

答案 0 :(得分:2)

你想要的是:

awk '{gsub(/\047/,".")}1' file

请参阅http://awk.freeshell.org/PrintASingleQuote

答案 1 :(得分:0)

我不确定我是否正确地解决了问题。如果要用点替换所有出现的单引号,请使用tr

tr "'" "." < file.txt > sanitized.txt

如果你想使用反斜杠转义单引号,请使用sed,如下所示:

sed "s/'/\\\'/g" file.txt > sanitized.txt

注意:请认真对待advice from CharlesDuffy。这远不是一个稳定安全的解决方案来转义SQL导入的值。

答案 2 :(得分:0)

您使用了错误的引用:

CBPeripheral.func writeValue(_ data: Data, for characteristic: CBCharacteristic, type: CBCharacteristicWriteType)

答案 3 :(得分:0)

由于您使用awk请求“如何使用awk转义单引号”,这是使用awk的解决方案:

awk '{ gsub("\x27", ".");print $0}'

其中\x27是十六进制值27(单引号)的转义序列表示。

有关所有转义序列的列表,请参阅https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html