这可能是一个Sed和shell脚本语法问题以及正则表达式。 (编辑:也许一个I/O问题,因为正则表达式读取时使用bash shell中的文件,但实际.txt
文件并没有改变作为所需的工作)Sed正则表达式OSX找到罗马数字并用空字符串替换。错误“未终止的替代模式”
尝试准备一个.txt
文件对于一些自然语言处理工作。想要在包含莎士比亚的十四行诗的纯文本文件中删除一些罗马数字,每个十四行诗以一个罗马数字开头,如IX.
和XVIII.
,它表示单个十四行诗的标题,包括十进制字符。
例intput文本:
XXV.
Let those who are in favour with their stars
Of public honour and proud titles boast,
希望的输出:
Let those who are in favour with their stars
Of public honour and proud titles boast,
继this question的例子中,我尝试了所有在终端的bash以下命令:
$ sed -i 's/[IVXLC]{1,}[.]//g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/^$/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/()/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/[]/g' sonnets.txt
当时的想法是用一个空字符串替换任何比赛。由于没有工作,我试图用空格字符替换匹配:
$ sed -i 's/[IVXLC]{1,}[.]/^ $/g' sonnets.txt
没有运气。以上所有的命令返回相同的错误:
sed: 1: "sonnets.txt": unterminated substitute pattern
我测试了正则表达式中的“查找”字段上https://regexr.com/,它似乎是正确的。目标文件在工作目录中是正确的。任何想法出了什么问题?我应该在Sed命令的“替换”字段中使用哪些字符?我应该修改正则表达式和/或Sed命令吗?
你能粘贴示例文本吗?什么是输入和你喜欢输出的样子。 ? –
我认为'{'和'}'需要被转义。 '\ {'和'\}'。方括号也可能需要不确定。 –
'{} []'在https://regexr.com/ – Elan