2012-07-07 51 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