Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_Changelog - Fatal编程技术网

bash获取第一个单词的最后一行

bash获取第一个单词的最后一行,bash,changelog,Bash,Changelog,我得到了一个bash脚本,并开始编写变更日志来跟踪变更 我在脚本中添加了一个函数,该函数响应“脚本版本-->” 但我必须手动编辑它 因此,我需要一个函数来获取第一个单词直到最后一行的空格,并将其存储为$CURRENTVERSION 更改日志语法为: v-0.3.2 Added x, y. v-0.3.2.1 Fixed y. v-0.4 Added z. 简单地说,我需要使用awk将v-0.4存储为$CURRENTVERSION: awk '{w=$1} END{print w}' fil

我得到了一个bash脚本,并开始编写变更日志来跟踪变更

我在脚本中添加了一个函数,该函数响应
“脚本版本-->”
但我必须手动编辑它

因此,我需要一个函数来获取第一个单词直到最后一行的空格,并将其存储为
$CURRENTVERSION

更改日志语法为:

v-0.3.2 Added x, y.

v-0.3.2.1 Fixed y.

v-0.4 Added z.
简单地说,我需要使用awk将
v-0.4
存储为
$CURRENTVERSION

awk '{w=$1} END{print w}' file
或使用sed:

sed -n '$s/^\([^ ]*\).*$/\1/p' file

如果您不喜欢awk或sed,可以这样做:

tail -n1 file | cut -d' ' -f1
但实际上,awk和sed是更好的工作工具…

bash:

read CURRENTVERSION rest < <(tail -1 changelog)

read CURRENTVERSION restawk'END{print}'changelog.txt
),因为我需要保持$1为空,然后currentver[0]就是我需要的;这是一个好方法吗?是的,awk在这里要简单得多。使用
-r
sed
不是更好吗?它不需要转义括号。而且
awk
将处理整个文件,不是吗?如果更改日志太长怎么办!只是假设性的询问。我更喜欢使用
sed
tail
grep
我认为您需要衡量性能,以确定是否正在处理整个文件以达到最终目的。从某种意义上说,所有面向行的程序都需要从文件的开头读取到结尾;如果您能确定这样做不会错过程序所需的任何较早的行,则可以使用二进制搜索加上
seek()
来稍后启动。是的,我会使用
awk'END{print w}'changelog.txt | cut-d'-f1
这是我唯一一次不使用awk或sed进行此操作,比如说,如果我在一个没有安装它们的嵌入式系统上,这也是一个有效的选择!