2012-07-07 29 views

回答

2

如果你有sed你可以使用简单的正则表达式。 (见linuxquestions.org

sed -n 's/.*\(PATTERN\).*/\1/p' FILE 

所以只查找文本StackOverflow在文件file.txt你会写

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

记得sed命令模式是一个正则表达式。所以如果你的模式包含任何正则表达式的元字符,他们需要被转义。

+0

正是我一直在寻找。谢谢!我知道sed可能涉及到,我用正则表达式很弱。 – sbartell 2012-07-07 06:34:20

+0

这只会打印一行中的第一个匹配项; 'grep -o'打印所有匹配项。 – tripleee 2012-07-07 07:11:41

+0

@tripleee您测试了吗?我测试了它。 – 2012-07-07 08:20:26

0

你可以使用Perl来代替:

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

我的busybox没有Perl。 – 2012-07-07 07:09:34

+0

yea,perls不行。如果它有busybox,它可能没有perl。 – sbartell 2012-07-07 07:11:26

3

awk解决方案:

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