我有一个文本文件(utf8):
请帮我正则表达式。我想替换
<p>
TERRANO...
</p>
with:空格。 :)
和
<td width="20%" align="left" class="thead">Rám:</td>
使用:
<td width="20%" align="left" class="thead">Something else:</td>
单词“Rám”也可以替换。
我发现了这一行,但我不知道如何使用它:
find . -type f -exec perl -p -i -e "s/SEARCH_REGEX/REPLACEMENT/g" {} \;
答案 0 :(得分:3)
假设您要替换HTML文件中的文本:
cd /path/to/my/project
find . -iname '*.html' -exec perl -p -i -e "s/Rám:/Something else:/g" {} \;
find . -iname '*.html' -exec perl -p -i -e "s/TERRANO.../Something else:/g" {} \;
答案 1 :(得分:3)
如果您不介意将常规.txt文件转换为。(x)html文件,并且HTML tidy和xmlstarlet可用,则可以不使用正则表达式!
tidy -v # HTML Tidy for Mac OS X released on 25 March 2009
xmlstarlet --version # 1.0.6
curl -L -o utf8file 'http://d.pr/1d6T+'
# convert HTML to XHTML with tidy
tidy -h
tidy -i -q -c -wrap 0 -numeric -asxml -utf8 --merge-divs yes --merge-spans yes utf8file > utf8file.xhtml
xmlstarlet el -a utf8file.xhtml
xmlstarlet el -v utf8file.xhtml
xmlstarlet edit --help
# edit file in-place
xmlstarlet edit -L -u "//*[local-name()='p']" -v 'EMPTY SPACE IS HERE' utf8file.xhtml
# remove <p> ... </p> completely
xmlstarlet edit -L -d "//*[local-name()='p']" utf8file.xhtml
xmlstarlet edit -L -u "//*[local-name()='td'][@width='20%' and @align='left' and @class='thead' and .='Rám:']" -v 'SOMETHING ELSE:' utf8file.xhtml
open -a Safari utf8file.xhtml
# convert XHTML to HTML with tidy
tidy -i -q -c -wrap 0 -numeric -ashtml -utf8 --merge-divs yes --merge-spans yes utf8file.xhtml > utf8file.html
open -a Safari utf8file.html
答案 2 :(得分:0)
要在就地编辑步骤之后从utf8file.xhtml中提取表,您可以使用xmlstarlet的“XPATH表达式的打印副本”功能:
xmlstarlet sel --help
# test
xmlstarlet sel -I -t -c "//*[local-name()='table'][@id='model-table-specifikacia']" utf8file.xhtml
xmlstarlet sel -I -t -c "//*[local-name()='table'][@id='model-table-specifikacia']" utf8file.xhtml > utf8file
答案 3 :(得分:0)
旧主题,但很有用:对于大规模搜索和替换,我倾向于使用Perl peewee(基于所使用的参数的名称),而不是依赖于find然后执行perl代码。
也就是说,我使用以下内容:
perl -pi -w -e 's/<p>\nTERRANO.+?\n<\/p>/<p>\n\n<\/p>/g;' ./*.html
和
perl -pi -w -e 's/<td (.+?) class=\"thead\">Rám:<\/td>/<td $1 class="thead">Something else:<\/td>/g;' ./*.html
希望能帮助别人!