这里我想删除与之匹配的行
<li><p><a href="anti\/recent.html">
第四次出现
我之前问过,但有点不同,那时我只需要与<ul>
匹配
那时我得到答案:
awk '/<ul>/ {ul++} ul == 6 { getline } 1' file
然而,这不适用于<li><p><a href="anti\/recent.html">
我试过https://stackoverflow.com/questions/ask
awk '/<li><p><a href="anti\/recent.html">/ {lipa href="anti\/recent.html"++} lipa href="anti\/recent.html" == 4 { getline } 1' file
返回我的synatx错误。任何人都可以帮忙吗?感谢
错误是:
awk: /<li><p><a href="anti\/recent.html">/ {lipa href="anti\/recent.html"++} lip a href="anti\/recent.html" == 4 { getline } 1
awk: ^ syntax error
awk: warning: escape sequence `\/' treated as plain `/'
awk: /<li><p><a href="anti\/recent.html">/ {lipa href="anti\/recent.html"++} lip a href="anti\/recent.html" == 4 { getline } 1
awk: ^ syntax error
***继续: 感谢任何帮助过的人 这里的awk似乎有一些bug
^I^I^I^I^I^I^I^I^I<li><p><a href="anti/recent.html">4 Jul 2011 - Fraudulent email purporting to be related to Standard Chartered Bank (Hong Kong) Limited</a></p></li>$
<!--<li>There is no phishing attack at this moment.</li>-->$
^I^I^I^I^I^I^I^I </ul>$
它会删除</ul>
,虽然它位于不同的行?
我已编辑并测试:
#!/bin/bash
i=1 cat test2.html | while read -r
do
if [ "$(echo $REPLY | grep -E '<li><p><a href=\"anti/recent.html\">')" ]
then
let i++;
if [ ! "$i" -eq 4 ]
then
echo "$REPLY";
fi;
else
echo "$REPLY";
fi;
done > test2.html;
这是正确与否?当我执行代码并查看test2.html的结果时,它是一个没有任何内容的页面???没有HTML代码没有文字?谢谢。
答案 0 :(得分:0)
你必须用awk做吗?如果不是 - 这段代码可能更清楚。
i=1 cat some_file | while read -r
do
if [ "$(echo $REPLY | grep -E '<li><p><a href=\"anti/recent.html\">')" ]
then
let i++;
if [ ! "$i" -eq 4 ]
then
echo "$REPLY";
fi;
else
echo "$REPLY";
fi;
done > fixed_file;