如何在bash中从文件中提取和切碎版本字符串
我有一个简单的文本文件。/version包含一个版本号。不幸的是,有时文件中的版本号后面跟有空格和换行符,如如何在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
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秒前[删除此注释]