Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
如何在bash中从文件中提取和切碎版本字符串_Bash_Perl - Fatal编程技术网

如何在bash中从文件中提取和切碎版本字符串

如何在bash中从文件中提取和切碎版本字符串,bash,perl,Bash,Perl,我有一个简单的文本文件。/version包含一个版本号。不幸的是,有时文件中的版本号后面跟有空格和换行符,如 1.1.3[space][space][newline] [newline] [newline] 在没有尾随空格和换行符的情况下,将版本号提取到bash变量中的最佳、最简单和最短方法是什么?我试过了 var=`cat ./version | tr -d ' '` 它适用于空格,但在附加tr-d'\n'时不起作用 谢谢, Chris$echo-e“1.1.1\n\n”>。/版本 $re

我有一个简单的文本文件。/version包含一个版本号。不幸的是,有时文件中的版本号后面跟有空格和换行符,如

1.1.3[space][space][newline]
[newline]
[newline]
在没有尾随空格和换行符的情况下,将版本号提取到bash变量中的最佳、最简单和最短方法是什么?我试过了

var=`cat ./version | tr -d ' '`
它适用于空格,但在附加
tr-d'\n'
时不起作用

谢谢, Chris

$echo-e“1.1.1\n\n”>。/版本
$read var<./版本
$echo-n“$var”| od-a
0000000   1   .   1.1.
0000005
$echo-e“1.1.1\n\n”>。/版本
$read var<./版本
$echo-n“$var”| od-a
0000000   1   .   1.1.
0000005

我仍然不知道为什么,但在删除并重新创建版本文件后,这起到了作用:

var=`cat ./version | tr -d ' ' | tr -d '\n'`

我很困惑。。。创建文本文件时可以做哪些不同的操作。但是,它现在可以工作了。

我仍然不知道为什么,但是在删除并重新创建版本文件后,它工作了:

var=`cat ./version | tr -d ' ' | tr -d '\n'`

我很困惑。。。创建文本文件时可以做哪些不同的操作。但是,它现在可以工作。

纯Bash,没有其他进程:

echo -e "1.2.3  \n\n" > .version

version=$(<.version)
version=${version// /}

echo "'$version'"
echo-e“1.2.3\n\n”>版本

version=$(Pure Bash,无其他进程:

echo -e "1.2.3  \n\n" > .version

version=$(<.version)
version=${version// /}

echo "'$version'"
echo-e“1.2.3\n\n”>版本
version=$(我喜欢来自的纯版本

我提供这一行命令来删除其他字符(如果有):

perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' 
提取的版本号被修剪/去除(无换行符或回车符):

我在中提供了更多的解释,并给出了其他更复杂(但仍然很短)的单行命令。

我喜欢中的纯版本

我提供这一行命令来删除其他字符(如果有):

perl -pe '($_)=/([0-9]+([.][0-9]+)+)/' 
提取的版本号被修剪/去除(无换行符或回车符):


我提供了更多的解释,并在中给出了其他更复杂(但仍然很短)的单行命令。

您可以通过将空格和换行符放在方括号内调用tr来实现这一点:var=$(cat./version | tr-d'[\n]')–Dennis Williamson 0秒前[删除此注释]通过将空格和换行符放在方括号内,只需调用一次tr即可:var=$(cat./version | tr-d'[\n]')–Dennis Williamson 0秒前[删除此注释]