gpt4 book ai didi

c - 如何防止 c 解释 sed

转载 作者:行者123 更新时间:2023-11-30 15:51:02 25 4
gpt4 key购买 nike

我使用下面的命令从文件中删除注释的空行并搜索特定模式。

sed '/#/d' $file | sed '/^[  ]*$/d' | tr -d '\n' | sed -n 's/^.*tags\s*[{]\s*hosttags\s*=\s*\([0-1]\)\s*[}].*/tags {hosttags = \1}/p'

虽然上面的表达式在 shell 中对我有效,但我必须在 C 中使用它。问题出在这一行。

sprintf(buf, "sed '/#/d' %s | sed '/^[  ]*$/d' | tr -d '\n' | sed -n 's/^.*tags\s*[{]\s*hosttags\s*=\s*\([0-1]\)\s*[}].*/tags {hosttags = \1}/p'",file);

C 尝试解释\s 但编译失败。用 [[:space]] 替换\s 不起作用。请让我知道如何在 C 中使其工作。

最佳答案

将反斜杠加倍,将 \n 更改为 \\n,将 \s 更改为 \\s ,等等:

sprintf(buf, "sed '/#/d' %s | sed '/^[  ]*$/d' | tr -d '\\n' | sed -n 's/^.*tags\\s*[{]\\s*hosttags\\s*=\\s*\\([0-1]\\)\\s*[}].*/tags {hosttags = \\1}/p'",file);

\\ 出现在 C 字符串文字中时,单个反斜杠将嵌入到字符串中的相应位置。

关于c - 如何防止 c 解释 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com