在 Ed 中,我可以进行搜索以替换所有空行,如下所示:
g/^$/d
Run Code Online (Sandbox Code Playgroud)
这将删除所有空行。但是如果我想删除两个或更多空行并保留 1 怎么办?例如:
Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud)
变成:
Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud) 我想创建一个sed
命令来从给定文档中删除所有这些奇怪的字符:
sed -n 's/\\|\xc2\xaeMD-IT\xc2\xaf\\|\xc2\xaeMD\\+BO\xc2\xaf\\|\xc2\xaeMDNM\xc2\xaf\xc2\xaeLL\\.8LI,0LI\xc2\xaf\\|\xc2\xaeLL0LI,0LI\xc2\xaf\\|\xc2\xaeMD\\+IT\xc2\xaf\\|\xc2\xaeLL.8LI,0LI\xc2\xaf\xc2\xaeMDIT\xc2\xaf\\|\xc2\xaeMDNM\xc2\xaf\xc2\xaeFL\xc2\xaf\xc2\xaeLL.8LI,0LI\xc2\xaf\\|\xc2\xaeFL\xc2\xaf\xc2\xaeMD-BO\xc2\xaf\\|\xc2\xaeFL\xc2\xaf\xc2\xaeMD-BO\xc2\xaf\\|\xc2\xaeMD-BO\xc2\xaf\\|\xc2\xaf\xc2\xaeOF1IN,1IN\xc2\xaf\xc2\xaeFC\xc2\xaf\xc2\xaeLL1LI,0LI\xc2\xaf\\|\\|\xc2\xaeSF1,1\xc2\xaf\\|\xc2\xaeFM1FT=0LI,LR=1;\\|\xc2\xaeMDSU\xc2\xaf\xc2\xaeFN1\xc2\xaf\\|\xc2\xaeMDNM\xc2\xaf\xc2\xaf\\|\xc2\xaeIV-RTF\\|\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\.\\|\xc2\xaf\xc2\xaeBF0\xc2\xaf\\|\xc2\xaeFS1\\|-------------------------------------\\|\xc2\xaf\xc2\xaeFW1\\|\\|//gp'\n
Run Code Online (Sandbox Code Playgroud)\n这些代码都是在另一个应用程序中创建的Nota Bene
,我有许多包含此类代码的文件,我想将它们转换为纯文本,甚至可能是 Markdown。
问题是字符没有被替换。我尝试过这样做,Sublime Text
并成功使用查找替换(正则表达式)剥离文档。sed
对我来说,创建一个脚本比用于Sublime
此任务更好。
我也尝试过使用Ed
,但它也没有找到替代品。
这是在 Sublime Text 中打开时的示例 nb 文件:
\n\xc2\xaeSSDEFAULTS\xc2\xaf\xc2\xaeLR1\xc2\xaf\xc2\xaeJU\xc2\xaf\xc2\xaeMD+BO\xc2\xaf\xc2\xaeUFTimes New Roman\xc2\xaf\xc2\xaeSZ12Pt\xc2\xafGlossary\xc2\xaeMD+BO\xc2\xaf\xc2\xaeTS.5IN,1IN,1.5IN,2IN,2.5IN,3IN,3.5IN,4IN,4.5IN,5IN,5.5IN,6IN\xc2\xaf \xc2\xaeMD-BO\xc2\xaf\n\xc2\xaeNJ\xc2\xaf\xc2\xaeLR1\xc2\xaf\xc2\xaeLL.5LI,0LI\xc2\xaf\xc2\xaeMD+BO\xc2\xaf\xc2\xaeLL0LI,0LI\xc2\xaf\xc2\xaeMDNM\xc2\xaf\xc2\xaeLR1\xc2\xaf\xc2\xaeLL.5LI,0LI\xc2\xafA fortiori proposition: If X is true, then how much greater is Y true? To move logically from a stronger argument to establish a weaker argument. The weaker argument is sometimes presented by the speaker as the stronger argument.\n\xc2\xaeLL0LI,0LI\xc2\xaf\xc2\xaeLR1\xc2\xaf\xc2\xaeLL.5LI,0LI\xc2\xaf\xc2\xaeLL0LI,0LI\xc2\xaf\xc2\xaeLR1\xc2\xaf\xc2\xaeLL.5LI,0LI\xc2\xafAccusative of motion/direction - Indicates …
Run Code Online (Sandbox Code Playgroud) 我目前在 Windows 上的 Debian WSL 中运行 Gnu ed 版本 1.18。如果我使用以下编码编辑文件:
ASCII text, with CRLF, LF line terminators
Run Code Online (Sandbox Code Playgroud)
或者
ASCII text, with CRLF,
Run Code Online (Sandbox Code Playgroud)
那么 ed 无法正确地将行与j command
. 相反,它删除了要连接的第一行。
如果文件是在 ed 中创建的,则不会出现此问题,但它会影响在其他程序中创建并随后在 ed 中编辑的文件。GNU ed 1.17 中也发现了同样的问题。
这是一个错误吗?如何规避这一问题?
是否有一个命令ed
重复上一个命令?我知道可以重复最后一次搜索(使用//
),但是重复和/或编辑最后一个命令而无需重新输入的命令会很有帮助。