6

如何使用 M4 从输入文件中删除空行(多余的空行)?

我知道我可以附加dnl到脚本每一行的末尾以抑制换行符输出,但我的意思是空行不在我的脚本中,而是在包含的数据文件中(我不应该放在的地方dnl's)。

我尝试过这样的事情:

define(`
',`')

(用任何内容替换新行)但它没有用。

谢谢。

4

2 回答 2

4

我使用divert()我的定义:

  • divert(-1)将抑制输出
  • divert(0)将恢复输出

例如:

divert(-1)dnl output supressed starting here

define(..)

define(..)

divert(0)dnl normal output starting here
use_my_definitions()...
于 2013-03-05T17:24:09.437 回答
1

我理解您的问题是一个带有额外换行符的数据文件,这意味着您希望在其中data<NL>moredata拥有诸如data<NL><NL>moredata.

这是一个剪切/粘贴到命令行的示例,该示例使用此处的文档生成数据集并运行 m4 脚本以删除数据集中的中断。您可以看到 patsubst 命令将序列 ( <NL><NL>*) 中一个或多个换行符的每个实例都替换为一个换行符。

cat > data << -----
1, 2
3, 4

5, 6

7, 8



9, 10
11, 12
e
-----

m4 << "-----"
define(`rmbreaks', `patsubst(`$*', `

*', `
')')dnl
rmbreaks(include(data))dnl
-----
于 2013-06-03T13:44:19.140 回答