gpt4 book ai didi

linux - Bash:如何转换此文本以满足我的需要?

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:59 25 4
gpt4 key购买 nike

我正在编写一个 Bash 脚本,需要转换一堆如下所示的行:

/* 100 */ "Continue",
/* 101 */ "Switching Protocols",
# ...

对此:

case 100: return "Continue";
case 101: return "Switching Protocols";
# ...

如何使用命令行工具执行此操作?我问的原因是因为我不太确定如何使用 regex + sed/grep“捕获”变量(100,“继续”)并将它们转换为新的文本行。

如果您感兴趣,这里是完整输出的要点(请注意,有些行末尾没有逗号):https://gist.github.com/aa5d19778844334b3ecd7d98cca67301

谢谢!

编辑@EdMorton

链接文件中显示的实际 4 种不同输入样式加上一种不存在但可能发生的输入样式是:

/* 101 */ "Switching Protocols",
/* 425 */ null,
/* 426 */ "Upgrade Required", // RFC 2817
/* 507 */ "Insufficient Storage"
/* 999 */ "Made Up But Could Happen" // RFC 9999

请提供以下所有上述内容的预期输出:

case 101: return "Switching Protocols";
case 425: ?
case 426: ?
case 507: return "Insufficient Storage";
case 999: ?

如果最后可以有 C 风格的注释,例如/* 426 */"Upgrade Needed",/* RFC 2817 */,然后也包含案例来涵盖这一点。

最佳答案

您可以使用简单的 sed 替换和 GNU sed 来完成此操作,例如:

sed -r 's+/\*+case+g; s+\s*\*/\s*+: return +g; s+(,\s*)?(//.*)?$+;\2+g' yourfile

sed s 命令使用 + 作为分隔符(通常使用 /,但注释中也有 /)。 * 需要转义并变为 \*

有趣的 \s*\*/\s* 意思是:可选空格 \s* 后跟一个星号(转义后变成 \*),后跟 / 和可选空格 \s*

关于linux - Bash:如何转换此文本以满足我的需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36386025/

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