我的sed调用似乎都没有在文档上激活。我检查并仔细检查了正则表达式,它适用于我可以使用的所有文本编辑器(Geany,Gedit,Notepad ++),任何人都对我做错了什么有任何想法?
#!/bin/sh
clear
antiword q.doc > q.txt
sed -i -e's/\[.*\]//g' q.txt # replace [...] with nothing
sed -i -e's/^[ \t]+[o][ \t]//g' q.txt # replace old word UL with nothing
sed -i -e's/^[ \t]+[•][ \t]//g' q.txt # replace old word UL with nothing
奖励标记,用于向我展示如何删除文件中的额外退货,以便之前有2个或更多的元素之间只有1行。
答案 0 :(得分:3)
看起来您在编写正则表达式时考虑了Perl语法或扩展正则表达式语法,但sed使用basic regular expressions。根据您使用的sed的实现,最简单的解决方案是告诉sed使用带有-E
(Mac OS X)或-r
(GNU sed)标志的扩展正则表达式。您可能还需要将\t
设置为文字标签。
答案 1 :(得分:1)
如果您使用的是GNU-sed:
第1行)在这里运行良好(删除成对的方括号及其间的所有内容)。
第2行和第3行)(
来自
[
列表]
的联机帮助页:字符$,,。,[和\}通常在列表中不是特殊的。 例如,[*]匹配'\'或'',因为\不匹配 特别在这里。
解决方案:代替[ \t]
代码:[:space:]