linux命令之grep的 o選項

2021-08-09 01:54:42 字數 2285 閱讀 7520

這個選項說的是, 只輸出匹配的部分.

在寫shell抓取網頁內容時, 開始不知道這個選項,

後來居然用上了perl的html::tokeparser,

我只想說, 喜新厭舊是人類最好的品質, 不然怎麼來那麼多創新…(心裡一陣自嘲),

雖然走了很多彎路, 但是也解決了問題.

場景還原如下:

乙份html內容(page.html), 裡面有幾個hidden的input, 內容簡化如下(前後的…表示其他內容):

...

type

="hidden"

name

="fd"

value

="q2m4nljn4agsaymtrsizaw6vnqry"

/>

type

="hidden"

name

="execution"

value

="e1s1"

/>

type

="hidden"

name

="_eventid"

value

="submit"

/>

...

這三個東西都比較關鍵, 想著給乙個name(如execution), 取出value(e1s1);

嘗試如下:

[root@localhost grep-o]

# cat page.html | grep 'name="execution" value="[a-za-z0-9-]\+".*>'

"hidden" name=

"execution" value=

"e1s1" />

這樣找到的是name=.../>這部分

知道了有-o引數(只輸出匹配的部分), 那就簡單了

[root@localhost grep-o]

# cat page.html | grep 'name="execution" value="[a-za-z0-9-]\+".*>' | grep -o 'e[0-9][0-9a-za-z]\+'

e1s1

沿用這個思路, 其他兩個也是類似的處理方法.

另附上當時寫的perl檔案, 以後少走彎路!

#!/usr/bin/perl –w

require html:

:tokeparser;

# 除錯用的模組, 類似php的var_dump

use data:

:dumper;

# 獲取登入頁面的隱藏欄位的內容

# usage:

# perl parsecontent.pl page.html

$loginhtml

=$argv[0

];# 登入頁面檔案

# $fieldname = $argv[1]; # 隱藏欄位的名字(name值)

# print $loginhtml;

$parser

= html:

:tokeparser->new(

"$loginhtml")||

die"can't open: $!"

;# 儲存名值, 關聯陣列

my@arr1=(

);while(my

$token

=$parser

->get_tag(

"input"))

# 沒有name的跳過

next

unless

my$name

=$token

->[1

];my$value

=$token

->[1

];$arr1

=$value

;# push @arr1, $name;

# push @arr1, $value;

# last; # break;

}# print dumper(@arr1);

# print $arr1 || '---';

$fieldfilename

='tmp/fields.txt'

;system(

"rm -rf $fieldfilename");

foreach

my$name

(keys %arr1

) >> $fieldfilename");

}

另外,附幾個實用的選項

歡迎補充指正!

Linux命令之 grep命令》

1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來 也可以通過管道重定向流輸出到檔案中 grep全稱是global regular expression print,表示全域性正規表示式列印,它的使用許可權是所有使用者。2.格式 grep...

linux命令之grep命令

grep 命令是乙個十分強大的文字搜尋命令,它全面的搜尋滿足正規表示式文字內容並且可 以把對應的行 以及行號列印出來 基本格式 grep 選項 模式 檔案或者目錄 模式 是什麼呢?模式就是要搜尋的文字內容的正規表示式,當然也可以時最簡單的最直接的 文字。輸出是什麼呢,一般的輸出的是滿足有所要搜尋內容...

Linux命令之grep命令

grep命令是文字搜尋命令,它可以正規表示式搜尋文字,也可從乙個檔案中的內容作為搜尋關鍵字。grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到標準輸出,不影響原檔案內容。語法 grep option patter...