【问题标题】:how can i get the content of between two special strings in shell如何获取shell中两个特殊字符串之间的内容
【发布时间】:2012-12-11 05:30:01
【问题描述】:

我有两个特殊字符,我想在 shell 中获取它们之间的内容。

不要使用 awk,因为我的 linux 找不到 awk。

【问题讨论】:

  • 什么特殊字符? tr 或 sed 可能会成功 ;)
  • @Jean-Christophe Meil​​laud 字符串,如“AB”到“DE”。你能详细介绍一下tr或sed吗..
  • 回复:“我的 linux 找不到 awk”:这听起来是一个非常严重的问题,您应该尝试解决,而不是解决它。
  • @ruakh 我该如何解决它..
  • @choujayyl:这取决于问题所在。我建议你在Super User(Stack Overflow 的姊妹网站之一)询问这个问题。

标签: shell sed grep tr


【解决方案1】:
echo "ABxxxDE" | sed -e 's/AB\(.*\)DE/\1/g'

将打印出来:

xxx

【讨论】:

  • 这很适合您选择的数据(所以 +1)。假设输入是abcABxxxDEdef。您的命令将产生abcxxxdef,但仍有空间假设所需的输出仍然只是xxx。诚然,这个问题应该给出输入和输出的例子(目前还没有),但我认为这是对这个问题的合理解读(对你的答案来说并不难解决)。
  • @Tim 我说字符串不短,是小节,所以你叫我回显“xxxxx”,我在回显中输入长字符串吗..
  • @choujayyl 如果您的数据在文件中,您可以使用“cat”而不是“echo”。我认为您从未说过您的字符串不短。也许您需要编辑您的问题。
【解决方案2】:
 $ sed -n '/WORD1/,/WORD2/p' /path/to/file 
 $ sed -n '/FOO/,/BAR/p' test.txt

【讨论】:

    【解决方案3】:
    echo "This is a #TEST%" | grep -o \#[a-zA-Z.0-9]*\%
    

    将产生

    #TEST%
    

    您还可以使用 sed.. 去除特殊字符。

    echo "This is a #TEST%" | grep -o \#[a-zA-Z.0-9]*\% | sed 's/#//g' | sed 's/%//g'
    

    让步

    TEST
    

    【讨论】:

    • 我怎样才能从字符串 (1000) 中获取开发人员,一个 NBKDHKLAS ----$ 开发人员,一个 NBKDHKLAS “签入代码以测试 Junit 的模拟服务...” 29- 2014 年 8 月 03:59 AM.. " 在字符串中出现两次..
    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 2022-12-21
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多