ixt*_*lix 5 sed text-processing regular-expression
所以,我有这个文本文件,它主要由字母数字字符组成。这是标准文件。但是由于我是从 PDF 复制并粘贴的,所以里面有页码。我不太关心偶尔出现的不是一页的数字,所以我想我会用sed
or将它们全部清除tr
。毕竟,只是比在 GUI 中查找和替换第一个零,然后一个,然后两个等等快一点点。
那我该怎么做呢?
要删除所有数字,这里有几种可能性:
tr -d 0-9 <old.txt >new.txt
tr -d '[:digit:]' <old.txt >new.txt
sed -e 's/[0-9]//g' <old.txt >new.txt
Run Code Online (Sandbox Code Playgroud)
如果您只想摆脱页码,您可以使用更好的正则表达式来识别那些作为页码的数字。例如,如果页码总是单独出现在一行上,除了空格,下面的命令将删除只包含一个由空格包围的数字的行:
sed -e '/^ *[0-9]\+ *$/d' <old.txt >new.txt
Run Code Online (Sandbox Code Playgroud)
(\+
是 GNU 扩展;对于某些sed
实现,您可能需要更长的标准替代:\{1,\}
或使用[0-9][0-9]*
)。
不过,您不需要为此使用命令行。任何半途而废的编辑器都具有正则表达式搜索和替换功能。