Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中解析单词_Shell_Parsing - Fatal编程技术网

如何在shell脚本中解析单词

如何在shell脚本中解析单词,shell,parsing,Shell,Parsing,我想在shell脚本中解析以下单词 VERSION=METER1.2.1 在这里,我想把它分成两个单词 WORD1=METER WORD2=1.2.1 让我来帮助您分析它吧?bash内置的参数扩展支持比使用外部工具(如sed)效率更高。例如,如果希望name变量包含第一个数字之前的所有内容,而numbers变量包含最后一个字母字符之后的所有内容: version=METER1.2.1 name=${version%%[0-9]*} numbers=${version##*[[:alpha:

我想在shell脚本中解析以下单词

VERSION=METER1.2.1
在这里,我想把它分成两个单词

WORD1=METER

WORD2=1.2.1

让我来帮助您分析它吧?

bash内置的参数扩展支持比使用外部工具(如sed)效率更高。例如,如果希望
name
变量包含第一个数字之前的所有内容,而
numbers
变量包含最后一个字母字符之后的所有内容:

version=METER1.2.1
name=${version%%[0-9]*}
numbers=${version##*[[:alpha:]]}

要了解这一点,请参阅或。

您可以为此使用
awk
。例如:
echo“METER1.2.1”| awk-F“METER”{print$2}
查看
bash
手册页的
参数扩展部分中的所有运算符。我敢打赌其中的一些会对这个有用。如果你尝试自己去弄清楚,你会学到更多,而不是有人在这里为你做。这并不像你想的那么明显:你分裂的标准是什么?是否都是字母在左边,然后是数字/点?顺便说一句,作为惯例,只有环境变量和内置变量都应该是大写的;让shell局部变量至少具有一个小写字符可以防止此类变量与环境之间的命名空间冲突。问题没有标记为
bash
,但这个答案应该适用于任何POSIX shell。