如何使用字符串作为分隔符shell脚本

如何使用字符串作为分隔符shell脚本,shell,cut,Shell,Cut,我正在读一行代码,并在脚本中使用正则表达式来匹配它。(/bin/bash) 现在我的问题是我使用冒号作为分隔符。但有时电子邮件的主题会有多个冒号,因此我无法抓住整个主题,因为这一点。我正在寻找一种方法来抓住以下主题后面的所有内容。甚至有一种方法可以循环检查是否有冒号之类的东西。也许“剪切”允许您使用字符串作为分隔符进行剪切?不确定……有什么想法吗 谢谢 除了您已经评论过的建议之外,还有其他选择: cut -d\: -f2- f2后的破折号表示包含所有其他字段。基于shell的解决方案也将比运

我正在读一行代码,并在脚本中使用正则表达式来匹配它。(/bin/bash)

现在我的问题是我使用冒号作为分隔符。但有时电子邮件的主题会有多个冒号,因此我无法抓住整个主题,因为这一点。我正在寻找一种方法来抓住以下主题后面的所有内容。甚至有一种方法可以循环检查是否有冒号之类的东西。也许“剪切”允许您使用字符串作为分隔符进行剪切?不确定……有什么想法吗


谢谢

除了您已经评论过的建议之外,还有其他选择:

cut -d\:  -f2-
f2后的破折号表示包含所有其他字段。基于shell的解决方案也将比运行“cut”过程更快

我还建议您将echo的arg(和${line#*:})双引号,以避免丢失$line中单词之间的多个/非空格空格,如果您关心打印它/按原样传递它而不影响行上的字符的话


grep还有一个-i标志,可以避免您写入[上下]如果你不想要grep的输出,而不是将它重定向到/dev/null,你可以使用-q标志,这意味着不要输出它-只需使用ok/not状态代码退出,这样你就可以检查它。如果你处理多行代码,并且想在找到第一行时退出,你也可以使用另一个f滞后。

发现了一些对我有用的东西。我刚刚做了主题=
echo${line#*:}
这删除了冒号的最短匹配。感谢阅读的人!
cut -d\:  -f2-