如何使用M4从输入文件中删除空行(剩余的empy行)?
我知道我可以将dnl
附加到我脚本的每一行的末尾以抑制换行输出,但我的意思是空白行不在我的脚本中,而是在包含的数据文件中(其中)我不应该放dnl's
)。
我尝试过类似的东西:
define(`
',`')
(什么都不换新线) 但它没有用。
感谢。
答案 0 :(得分:3)
我在我的定义中使用divert()
:
divert(-1)
将取消输出divert(0)
将恢复输出例如:
divert(-1)dnl output supressed starting here
define(..)
define(..)
divert(0)dnl normal output starting here
use_my_definitions()...
答案 1 :(得分: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
-----