如何从Linux中的字符串中提取以用户定义的特殊字符开头和结尾的子字符串?
我正在处理 Linux 脚本,想要从主字符串中提取子字符串,如下例所示:-
主字符串 =
2011-12-03 11:04:22#Alex#Audrino^13b11254^Townville#USA#
我需要的是:-
子字符串 =
13b11254
我只是想读取并提取中间的任何内容 ^ ^ 特殊人物。
该代码将在 Linux 脚本中使用。
I am working on linux scripts and want to extract a substring out of a master string as in the following example :-
Master string =
2011-12-03 11:04:22#Alex#Audrino^13b11254^Townville#USA#
What I require is :-
Substring =
13b11254
I simply want to read and extract whatever is there in between ^ ^ special characters.
This code will be used in a linux script.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
POSIX sh 兼容:
假设每个字符串仅使用
^
2 次作为 2 个分隔符。POSIX sh compatible:
Assumes that
^
is only used 2x per string as the 2 delimiters.使用标准 shell参数扩展:
Using standard shell parameter expansion:
下面的解决方案使用
cut
实用程序,它会生成一个进程,并且比 shell 参数扩展解决方案慢。它可能更容易理解,并且可以在文件上运行而不是在单个字符串上运行。The solution bellow uses the
cut
utility, which spawns a process and is slower that the shell parameter expansion solution. It might be easier to understand, and can be run on a file instead of on a single string.您还可以使用 bash 数组和字段分隔符:
这允许您测试是否有 2 个分隔符:
You can also use bash arrays and field separator:
This allows you to test is you have exactly 2 separators: