如何使用 M4 从输入文件中删除空行(多余的空行)?
我知道我可以附加dnl
到脚本每一行的末尾以抑制换行符输出,但我的意思是空行不在我的脚本中,而是在包含的数据文件中(我不应该放在的地方dnl's
)。
我尝试过这样的事情:
define(`
',`')
(用任何内容替换新行)但它没有用。
谢谢。
如何使用 M4 从输入文件中删除空行(多余的空行)?
我知道我可以附加dnl
到脚本每一行的末尾以抑制换行符输出,但我的意思是空行不在我的脚本中,而是在包含的数据文件中(我不应该放在的地方dnl's
)。
我尝试过这样的事情:
define(`
',`')
(用任何内容替换新行)但它没有用。
谢谢。
我使用divert()
我的定义:
divert(-1)
将抑制输出divert(0)
将恢复输出例如:
divert(-1)dnl output supressed starting here
define(..)
define(..)
divert(0)dnl normal output starting here
use_my_definitions()...
我理解您的问题是一个带有额外换行符的数据文件,这意味着您希望在其中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
-----