Bash 如何在没有-o的情况下grep-o

Bash 如何在没有-o的情况下grep-o,bash,Bash,我有BusyBox v1.01提供我的命令。因此,-o不包括在grep中。如果没有-o?如果您有sed,您可以使用简单的正则表达式。(见附件) 因此,要在文件file.txt中仅查找文本StackOverflow,您需要编写 sed -n 's/.*\(StackOverflow\).*/\1/p' file.txt 记住sed命令中的模式是正则表达式。因此,如果您的模式包含正则表达式的任何元字符,则需要对它们进行转义 如果你有sed你可以使用简单的正则表达式。(见附件) 因此,要在文件fil

我有BusyBox v1.01提供我的命令。因此,-o不包括在grep中。如果没有-o?

如果您有
sed
,您可以使用简单的正则表达式。(见附件)

因此,要在文件
file.txt
中仅查找文本
StackOverflow
,您需要编写

sed -n 's/.*\(StackOverflow\).*/\1/p' file.txt

记住sed命令中的模式是正则表达式。因此,如果您的模式包含正则表达式的任何元字符,则需要对它们进行转义

如果你有
sed
你可以使用简单的正则表达式。(见附件)

因此,要在文件
file.txt
中仅查找文本
StackOverflow
,您需要编写

sed -n 's/.*\(StackOverflow\).*/\1/p' file.txt

记住sed命令中的模式是正则表达式。因此,如果您的模式包含正则表达式的任何元字符,则需要对它们进行转义

您可以改用Perl:

perl -lne 'print $1 while /(pattern)/g' FILE

您可以改用Perl:

perl -lne 'print $1 while /(pattern)/g' FILE

awk
解决方案:

awk '/PATTERN/{match($0,/PATTERN/);print substr($0,RSTART,RLENGTH)}' inputFile

awk
解决方案:

awk '/PATTERN/{match($0,/PATTERN/);print substr($0,RSTART,RLENGTH)}' inputFile

正是我想要的。谢谢我知道sed可能参与其中,我对regex的理解很弱。这只会在一行上打印第一个匹配
grep-o
打印所有匹配项。@tripleee您测试了吗?我测试了它。直到现在才测试,但当我测试的时候,它的行为和我描述的一模一样,毫不奇怪。相比之下,
grep-ob我想busybox
sed
也不支持非贪婪匹配。无论如何,如果OP对基于行的解决方案感到满意,就没有必要修复它。这正是我想要的。谢谢我知道sed可能参与其中,我对regex的理解很弱。这只会在一行上打印第一个匹配
grep-o
打印所有匹配项。@tripleee您测试了吗?我测试了它。直到现在才测试,但当我测试的时候,它的行为和我描述的一模一样,毫不奇怪。相比之下,
grep-ob我想busybox
sed
也不支持非贪婪匹配。无论如何,如果OP对基于行的解决方案感到满意,就没有必要修复它。我的busybox没有Perl。是的,这是不可能的。如果它有busybox,它可能没有perl。我的busybox没有perl。是的,这是不可能的。如果它有busybox,它可能没有perl。