gpt4 book ai didi

bash - 如何删除 BASH 中 {} 大括号之外的所有内容?

转载 作者:行者123 更新时间:2023-11-29 09:33:47 26 4
gpt4 key购买 nike

我需要删除出现在 {} 括号之外的所有数据。例如,这里是 $variable 行:

The fish {{went}} to the {{restaurant}} to eat some {fish} for lunch.

在删除成对的 {} 之外的所有内容后,输出将是:

{{went}}{{restaurant}}{fish}
  • 所有大括号都成对出现。

我找到了帖子 Delete all data outside square brackets ,这是相似的,处理方括号,但我试图修改这两个答案的工作失败了,因为 [{ 在代码中可以有多种含义,作为原始数据中显示的符号,或者作为 sedawk 或正则表达式使用的东西。这是我根据另一篇文章中的答案尝试的方法。

awk -F '\{\}\{\}' '{for (i=2; i<NF; i+=2) printf "[%s]%s", $i, OFS; print ""}' <<< "$variable"

sed -e 's/^[^\{]*//;s/\}[^\{]*\[/\} \[/g;s/[^{]*$//;' <<< "$variable"

我如何进行适当的修改,以便其中之一删除大括号之外的所有数据?

最佳答案

这是一个使用 grep 的解决方案。 -P 表示使用允许非贪婪表达式的 Perl 语法,-o 仅打印匹配项。

echo "The fish {{went}} to the {{restaurant}} to eat some {fish} for lunch." |
grep -Po '{?{[^{}]+}}?'

关于bash - 如何删除 BASH 中 {} 大括号之外的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254782/

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