请花几秒钟。我想删除第六个<ul>
出现的行。
我谷歌这样做的方式,我试过
sed -i '/^<ul>$/ d/6' file
。
然而,事实证明
sed: -e expression #1, char 9: extra characters after
错误。
答案 0 :(得分:2)
AFAIK,sed
你不能轻易做到这一点。您可以将所有行连接到一个字符串,然后删除第6个出现,然后拆分字符串,但使用awk
更容易:
awk '/<ul>/ {ul++} ul == 6 { getline } 1' INPUTFILE > TMPFILE && mv TMPFILE INPUTFILE
测试结果如下:https://ideone.com/3YpVu
注意:它会丢弃第6行<ul>
的整行,并假设每行只能找到一个<ul>
。
HTH
答案 1 :(得分:1)
awk '/<ul>/ && ++count == 6 {next} {print}' filename
答案 2 :(得分:0)
perl -p -i -e "s/^<perl-regex-here>$\n//g" <filename>
应该删除与您在任何现代unix系统上提供的perl正则表达式匹配的任何行。否则,如果你计算出现并在第6次出现时终止该行,我知道没有命令可以在一行中执行。