2012-04-20 18 views
0

我試圖從grep兩行html模式從文件中打印並使用cat打印。的行是:如何在index.html文件中使用egrep匹配2行html代碼

<link type="text/css" rel="stylesheet" href="https://test.mydomain.com/store.css"> 

<script type="text/javascript" language="javascript" src="https://test.mydomain.com/store/gwt.nocache.js"> 

如果我使用他們seperatly使用grep命令。像

if grep -F -i -n '<link type="text/css" rel="stylesheet" href="https://test.mydomain.com/store.css">' tmp.html > out.txt; then cat out.txt # IT WORKS. 

但我需要grep這兩種模式。我試着用egrep。作爲

egrep '(pattern1|pattern2)' 

if egrep -e -i -c '(\<link type\=\"text\/css\" rel\=\"stylesheet\" href\=\"https\:\//test\.mydomain\.com\/gwtstore\/store\.css\"\>|\<link type\=\"text\/css\" rel\=\"stylesheet\" href\=\"https\:\//test\.mydomain\.com\/store\/gwt\.nocache\.js\"\>)' tmp.html > out.txt; then cat out.txt 

,但上面的語法不工作了..請協助。我試着在文件中搜索兩組html代碼,如果它們退出,則使用sed命令以另一種模式替換。

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – jordanm 2012-04-20 13:04:55

+1

如果你想使用sed,你可以立即使用sed - 你爲什麼要使用grep呢? – 2012-04-20 13:46:52

回答

0

像這樣

fgrep -e 'firts_pattern' -e 'second_pattern' 
+0

謝謝,這是有效的。但如何顯示行號。我用-n標誌但沒有工作。 – Johnbritto 2012-04-20 13:23:11

+1

'fgrep -n -e'pat1'-e'pat2''適用於我(GNU grep)。 – yazu 2012-04-20 13:28:06

0

-e選項使用fgrep一樣。如果你打算使用的sed你可能只是想使用以下。您可能不需要兩個單獨的命令。使用sed你可以發現兩個模式是否存在,如果可以的話,用一個命令替換它們。

注意:以下內容包含內聯編輯。請備份您的文件之前進行測試

sed -i 's/<link type="text\/css" rel="stylesheet" href="https:\/\/test.mydomain.com\/store.css">/<REPLACE PATTERN 1>/g;s/<script type="text\/javascript" language="javascript" src="https:\/\/test.mydomain.com\/store\/gwt.nocache.js">/<REPLACE PATTERN 2>/g' /yourfile 

如果你是,你可以試試下面的

注意的OS X用戶:下面包含一個內聯編輯。請備份您的文件之前進行測試

sed -i '' 's/<link type="text\/css" rel="stylesheet" href="https:\/\/test.mydomain.com\/store.css">/<REPLACE PATTERN 1>/g;s/<script type="text\/javascript" language="javascript" src="https:\/\/test.mydomain.com\/store\/gwt.nocache.js">/<REPLACE PATTERN 2>/g' /yourfile 

記住,如果你打算使用他們逃脫你選擇更換花紋的「/」字符。

你也可以嘗試awk。在這種情況下,它的功能非常像grep。

awk '/<link type="text\/css" rel="stylesheet" href="https:\/\/test.mydomain.com\/store.css">/; /<script type="text\/javascript" language="javascript" src="https:\/\/test.mydomain.com\/store\/gwt.nocache.js">/' /yourfile 
0

與egrep你不需要那些括號,只是分隔單引號內的模式的管道。

egrep -n 'pattern1|pattern2'

應該只是罰款。

相關問題