我有一个包含许多行的文件。其中一个看起来像:
set auto_upgrade {1 2 3 4}
该列表可以包含更多数字。
现在,在shell脚本中,我想查看此文件并找出列表中的最后一个数字。在上面的例子中,它应该找到4.我有一个正则表达式来找到它:
set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)}
第二组包含我需要的东西。 但是,我该如何使用这个正则表达式?我尝试了 sed ,但它返回带有替换的完整文件。我只想要第二组。
提前致谢, 巴特
答案 0 :(得分:3)
首先,以安静模式启动sed:它不应该打印任何东西,除非被告知这样做(那是标志-n
)。然后只有在进行了替换(即模式修饰符p
)
sed -n 's/set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)}/\2/p'
答案 1 :(得分:0)
像
这样的东西cat filename | perl -pe的/^.*(\ d +)\} / $ 1 /'
应该有用。
答案 2 :(得分:0)
sed 's/.*\([0-9]\+\)}/\1/g'
替换部分中的“\ 1”与该组匹配。即(忽略逃脱和引用)
sed s/pattern1(pattern2)/\1/g
将返回pattern2的匹配部分