我有一个file,其中包含我想删除的不需要的换行符和空格序列。实际文件大约有100万行,这只是为了提供一个可重现的例子。
我可以grep
这样的违规行:
grep -ciP "\n\n {6,}" problem.rpt
它正确返回
## 3
所以我尝试用sed
替换字符串:
sed "s/\n\n {6,}//g" problem.rpt > prob2.rpt
但是我没有删除序列"\n\n {6,}"
,而是"\r\n\r\n {6,}"
(它在每个LF之前引入了CR ,而不删除它或6+空格)。
我在Windows 8.1 sed
中使用GNU grep
和cmd
。
我做错了什么,接近这份工作的正确方法是什么?
答案 0 :(得分:0)
以下其中一项对您有帮助吗?第二个很可能就是你要找的东西:
awk -v RS="\n\n {6,}" '7' problem.rpt
awk -v RS="\n\n {6,}" -v ORS="" '7' problem.rpt
我觉得你也有傻瓜,对吧?
我没有窗户为你测试......
答案 1 :(得分:0)
从sed
单行列表中我发现了一个解决了我的问题的命令:
sed -e :a -e "$!N; s/\n //;ta" -e "P;D" problem.rpt > prob2.rpt
然后,尝试破译命令,这就是我找到的here(逐字复制):
sed ':a; $!N; s/\n/string/; ta'
--- ---- ------------- --
| | | |--> go back (`t`) to `a`
| | |-------------> substitute newlines with `string`
| |----------------------> If this is not the last line (`$!`), append the
| next line to the pattern space.
|----------------------------> Create the label `a`.
我仍然不知道P;D
部分的作用,如果有知识的人编辑此答案,我会很感激。