我还没有发现任何明确回答我问题的内容。虽然非常接近,但我认为......
我有一行文件:
# Skipsdata for serienummer 1158
我想在最后提取4位数字并将其放入变量中,这个数字会因文件而异,因此我无法搜索" 1158"。但是" #Skipsdata for serienummer"总是保持不变。
我认为grep
,sed
或awk
可能是答案,但我并未100%明确其用法。
答案 0 :(得分:2)
您可以将grep
与-o
开关一起使用,该开关仅打印匹配的部分而不是整行。
打印文件yourFile
grep -Po '\d+$' yourFile
打印行末尾的所有四位数字,如问题中所述:
grep -Po '^# Skipsdata for serienummer \K\d{4}$' yourFile
-P
启用支持\d
,特别是\K
的perl样式正则表达式。
\d
匹配任何数字(0-9)。
\d{4}
恰好匹配四位数
\K
让grep忘记之前匹配的部分,这样只会打印之后的部分。
答案 1 :(得分:2)
使用Awk
作为
numberRequired=$(awk '/# Skipsdata for serienummer/{print $NF}' file)
printf "%s\n" "$numberRequired"
1158
答案 2 :(得分:0)
有多种方法可以找到您的号码。假设输入数据位于名为inputfile
的文件中:
mynumber=$(sed -n 's/# Skipsdata for serienummer //p' <inputfile)
将只打印数字并忽略所有其他行;
mynumber=$(grep '^# Skipsdata for serienummer' inputfile | cut -d ' ' -f 5)
将首先过滤相关行,然后仅输出第5个字段(数字)