使用 sed 打印分隔符之间的文本

发布于 2024-11-06 14:44:06 字数 144 浏览 0 评论 0原文

假设我有 op(abc)asdfasdf 并且需要 sed 在括号之间打印 abc。什么对我有用? (注意:我只想要一行中第一对分隔符之间的文本,如果特定的输入行没有一对括号,则不需要任何文本。)

Suppose I have op(abc)asdfasdf and I need sed to print abc between the brackets. What would work for me? (Note: I only want the text between first pair of delimiters on a line, and nothing if a particular line of input does not have a pair of brackets.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

屋顶上的小猫咪 2024-11-13 14:44:06
$ echo 'op(abc)asdfasdf' | sed 's|[^(]*(\([^)]*\)).*|\1|'
abc
$ echo 'op(abc)asdfasdf' | sed 's|[^(]*(\([^)]*\)).*|\1|'
abc
薆情海 2024-11-13 14:44:06
sed -n -e '/^[^(]*(\([^)]*\)).*/s//\1/p'

该模式查找以零个或多个不是左括号的字符列表开头的行,然后查找以左括号开头的行;然后开始记住零个或多个不是右括号的字符的列表,然后是右括号,后面是任何内容。将输入替换为您记住的列表并打印它。 -n 表示“默认不打印”——任何不带括号的输入行都不会被打印。

sed -n -e '/^[^(]*(\([^)]*\)).*/s//\1/p'

The pattern looks for lines that start with a list of zero or more characters that are not open parentheses, then an open parenthesis; then start remembering a list of zero or more characters that are not close parentheses, then a close parenthesis, followed by anything. Replace the input with the list you remembered and print it. The -n means 'do not print by default' - any lines of input without the parentheses will not be printed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文