0

我尝试从文件中提取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 

但上述语法不起作用..请协助。所有我都尝试在一个文件中搜索两组 html 代码,如果他们退出使用sed命令替换为另一个模式。

4

3 回答 3

0

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

egrep -n 'pattern1|pattern2'

应该可以正常工作。

于 2012-04-20T17:03:47.717 回答
0

像这样使用带有 -e 选项的 fgrep

fgrep -e 'firts_pattern' -e 'second_pattern'
于 2012-04-20T13:03:10.147 回答
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
于 2012-04-20T13:09:00.797 回答