我正在尝试从模式的开头获取子字符串。
我只想使用cut
,但如果模式的长度只有几个字符,则无效。
如果我需要一个单字符分隔符,那么这就可以解决问题:
result=`echo "test String with ( element in parenthesis ) end" | cut -d "(" -f 2-`
编辑:样本测试:
INPUT: ("This test String is an input", "in")
OUTPUT: "ing is an input"
INPUT: ("This test string is an input", "in ")
OUTPUT: ""
INPUT: ("This test string is an input", "n")
OUTPUT: "ng is an input"
注意:括号表示输入都采用字符串和分隔符字符串。
答案 0 :(得分:1)
编辑:
总之,所要求的是一种从字符串中解析文本的方法,该字符串从特定子字符串开始并在行尾结束。如上所述,有很多方法可以做到这一点。这是一个...
egrep -o "DELIM.*" input
...其中'DELIM'是所需的子字符串。
答案 1 :(得分:0)
另外
awk -v delim="in" '{print substr($0, index($0, delim))}'
答案 2 :(得分:0)
这可以在没有外部程序的情况下完成。假设要处理的字符串位于$string
且分隔符为DELIM
:
result=${string#"${string%%DELIM*}"}
内部部分用$string
替换从第一次出现DELIM
(如果有)开始的所有内容。然后,外部部分从$string
的开头删除该值,从第一次出现的DELIM
开始,或者如果DELIM
没有出现则返回空字符串。 (变量string
保持不变。)