延续先前的问题 Sed on Mac not recognizing regular expressions使用SED使用正则表达式
我编辑和清理多个文本文件,准备他们在另一个软件的输入清理文本文件。我一直没有能够让Sed处理实际的正则表达式:
我知道这些不正确,但最接近的我可以来描述我感兴趣的代码。请将两行代码与输入并输出。
任何帮助非常感谢。
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\n[0-9]+/\n/;}' {} +
格式文件:
获得在行开始摆脱所有的数字
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/([^\n]+)\nACROSS\n/<ACROSS PUZZLE>\n<TITLE>\n\1\n<AUTHOR>\n\n<COPYRIGHT>\n\n<SIZE>\n15x15\n<GRID>\n<ACROSS>\n/;}' {} +
任何时候都有两个或两个以上的下划线,只有三个
更换find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\_\_+/\_\_\_/;}' {} +
任何时候有省略号与点之间的空间,删除空格:
find . -type f -name '*.txt' -exec sed -i '' '/^$/{N; s/\. \. \.+/\.\.\./;}' {} +
输入:
nxd-12345678 Serial number of file
Title of File
ACROSS
1 __ fast
2 IRS-form experts
10 Lend. . .
12 Deals with adversity
输出:
nxd-12345678 Serial number of file
<ACROSS PUZZLE>
<TITLE>
Title of File
<AUTHOR>
<COPYRIGHT>
<SIZE>
15x15
<GRID>
<ACROSS>
___ fast
IRS-form experts
Lend...
Deals with adversity
标题总是在第二行吗? ACROSS会不会出现在第三行?其余的都很简单。 –
我很惊讶没有人在你的线索中找到你 - sed总是做任何跨越多行的东西的错误工具。你应该使用awk。 –
Ed。不,没有人。我是前端开发人员,所以我只有这方面的基本知识。我的知识大多局限于像PHP这样的东西。我没有太多的使用命令行技能。但是我能够回答我所有的问题。我最终完成的这个脚本将几个不同的任务组合成一个脚本。准备一大堆文件时节省大量时间,在该脚本之前,需要大量手动按摩数据才能为其最终目的地做好准备。 – verbatim