Shell 如何使用grep命令提取文本文件中的数字

Shell 如何使用grep命令提取文本文件中的数字,shell,grep,Shell,Grep,我有一个cookie文件,我只想使用grep命令提取.jpg扩展名之前的数字。我该怎么做 USERSTAFFPHOTO 09480106177557.jpg 我想复制09480106177557echo“USERSTAFFPHOTO 09480106177557.jpg”| grep-oE'[0-9]{1,}'echo“USERSTAFFPHOTO 09480106177557.jpg”| grep-oE'[0-9]{1,}'你应该链接两个grep命令,第一个获取文件名以及扩展名.jpg,第二个

我有一个cookie文件,我只想使用grep命令提取.jpg扩展名之前的数字。我该怎么做

USERSTAFFPHOTO 09480106177557.jpg


我想复制09480106177557

echo“USERSTAFFPHOTO 09480106177557.jpg”| grep-oE'[0-9]{1,}'
echo“USERSTAFFPHOTO 09480106177557.jpg”| grep-oE'[0-9]{1,}'
你应该链接两个grep命令,第一个获取文件名以及扩展名
.jpg
,第二个仅获取文件名中的数字:

grep -oE '[0-9]+\.jpg' | grep -oE '[0-9]+'

否则,您将获得文件中存在的所有数字,包括或不包括
.jpg
扩展名。

您应该链接2个grep命令,第一个命令与
.jpg
扩展名一起获取文件名,第二个命令仅从文件名中获取数字:

grep -oE '[0-9]+\.jpg' | grep -oE '[0-9]+'

否则,您将获得文件中存在的所有数字,包括或不包括
.jpg
扩展名。

为什么只使用特定的工具?你想要这个号码,还是要使用grep?如果格式是固定的,我会使用
tr

echo USERSTAFFPHOTO 09480106177557.jpg | tr -cd [0-9]
如果这是文件中的一行,您需要将其过滤掉,请尝试awk:

awk '/USERSTAFFPHOTO/{print $2}' FS=' |\\.' input

为什么要把自己局限于某个特定的工具?你想要这个号码,还是要使用grep?如果格式是固定的,我会使用
tr

echo USERSTAFFPHOTO 09480106177557.jpg | tr -cd [0-9]
如果这是文件中的一行,您需要将其过滤掉,请尝试awk:

awk '/USERSTAFFPHOTO/{print $2}' FS=' |\\.' input

grep-no'name=“[0-9]*””文件名如果您愿意,您可以删除-n选项,因为这是行号grep-no'name=“[0-9]*””文件名如果您愿意,您可以删除-n选项,因为这是行号
{1,}
+
@tripleee是一种非常笨拙的方式:谢谢,注意到这一点!另外,如果你能帮助我理解为什么会这样,那就太好了。
{1,}
是一种非常笨拙的写作方式。
+
@tripleee:谢谢,重点指出!另外,如果你能帮我了解原因,那就太好了?