【发布时间】:2020-03-25 13:27:34
【问题描述】:
我有一个文件,其中一行包含VERSION : X.X.X
我想在控制台上返回该行的 X.X.X 部分。
首先,我需要得到我正在使用的线路
sed -n 14p filename.txt
对于如何只返回该行的最后 5 个字符而不是整行,我有点迷茫。
【问题讨论】:
-
为什么不获取第 3 列?
awk '{print $3}'很好奇为什么sed是首选。
我有一个文件,其中一行包含VERSION : X.X.X
我想在控制台上返回该行的 X.X.X 部分。
首先,我需要得到我正在使用的线路
sed -n 14p filename.txt
对于如何只返回该行的最后 5 个字符而不是整行,我有点迷茫。
【问题讨论】:
awk '{print $3}' 很好奇为什么sed 是首选。
请您尝试关注一下。
awk '/VERSION/{print substr($0,length($0)-4)}' Input_file
简要说明: 查找具有字符串VERSION 的行,然后使用subtr 打印子字符串,从长度为4 到行的最后一个字符。
关于 OP 的问题,为什么我们必须写代码 length($0)-4 而不是 length($0)-5: 让我们通过以下方式理解它:
VERSION : X . X . X
^ ^ ^ ^ ^
| | | | |
-4 -3 -2 -1 Last character/letter of this line(so this becomes 1 character out of 5.
That's why we need to mention -4 in length($0)-4 so that it takes value till last character).
【讨论】:
-4,只看到输出将是X.X.X,如下所示,它工作正常。
substr的解决方案中也添加了解释。
我的第一个想法:
rev | cut -c-5 | rev
但是用sed你可以替换:
sed 's/.*\(.\{5\}\)$/\1/'
【讨论】:
你可以使用
sed -n '14 s/VERSION *: *//p' file
使用s/VERSION *: *//,您只需删除VERSION,0 个或多个空格,:,0 个或多个空格。
【讨论】: