当前位置:  开发笔记 > 编程语言 > 正文

如何将特定分隔符之间的文本捕获到shell变量中?

如何解决《如何将特定分隔符之间的文本捕获到shell变量中?》经验,为你挑选了2个好方法。

指定我的变量我没有什么问题.我有一个普通文本的文件,其中有一些括号[ ](整个文件中只有一对括号),以及它们之间的一些文本.我需要在shell(bash)变量中捕获这些括号内的文本.我该怎么办?



1> strager..:

击/ sed的:

VARIABLE=$(tr -d '\n' filename | sed -n -e '/\[[^]]/s/^[^[]*\[\([^]]*\)].*$/\1/p')

如果这是不可读的,这里有一点解释:

VARIABLE=`subexpression`      Assigns the variable VARIABLE to the output of the subexpression.

tr -d '\n' filename  Reads filename, deletes newline characters, and prints the result to sed's input

sed -n -e 'command'  Executes the sed command without printing any lines

/\[[^]]/             Execute the command only on lines which contain [some text]

s/                   Substitute
^[^[]*               Match any non-[ text
\[                   Match [
\([^]]*\)            Match any non-] text into group 1
]                    Match ]
.*$                  Match any text
/\1/                 Replaces the line with group 1
p                    Prints the line



2> lhunath..:

我可以指出,虽然大多数建议的解决方案都可行,但绝对没有理由为什么要分叉另一个shell,并产生几个进程来完成这么简单的任务.

shell为您提供所需的所有工具:

$ var='foo[bar] pinch'
$ var=${var#*[}; var=${var%%]*}
$ echo "$var"
bar

看到: http://mywiki.wooledge.org/BashFAQ/073

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有