如何使用egrep在index.html文件中匹配2行html代码

时间:2012-04-20 12:55:49

标签: regex bash grep

我尝试grep来自文件的html两行cat图案并使用<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">

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 

作为

sed

但上面的语法不能解决..请协助。所有我试图在文件中搜索两组html代码,如果它们使用{{1}}命令退出替换为另一种模式。

3 个答案:

答案 0 :(得分:0)

像这样使用fgrep和-e选项

fgrep -e 'firts_pattern' -e 'second_pattern'

答案 1 :(得分:0)

如果您打算使用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

如果您打算使用它们,请记住转义REPLACE PATTERN中的'/'字符。

你也可以试试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

答案 2 :(得分:0)

使用egrep你不需要那些括号,只需要用单引号分隔模式的管道。

egrep -n 'pattern1|pattern2'

应该可以正常工作。