-1

有什么工具可以做我想做的事吗?我想在以@开头的行拆分文件“一个”,然后是文件名:

$ cat one
@header
-- header --
@body
-- body --
@body isn't a split point
@footer
-- footer --

$ splitit one
$ ls
body footer header one 
$ cat header
-- header --
$ cat body
-- body --
@body isn't a split point
$ cat footer
-- footer --

什么是拆分?

用例:

  • 在一个文件中编辑我的 html、js、css 和 docs(文件不大)
  • m4 预处理一个文件
  • splitit 读取 m4 输出并写出几个文件
  • 缩进/美化文件
  • 用 cat 重新组合成更少的文件...
4

2 回答 2

2
awk 'NF==1 && sub(/^@/,""){f=$0; next} {print > f}' one

如果您将有许多输出文件并且不使用 GNU awk,那么您必须随时关闭它们:

awk 'NF==1 && sub(/^@/,""){close(f); f=$0; next} {print > f}' one
于 2017-07-15T12:19:50.417 回答
0

替代awk方法:

awk -F' *|@' '$0~/^@/ && NF==2{fn=$2;next}{ print > fn }' one
  • -F' *|@'- 复合字段分隔符(空格或@
于 2017-07-15T13:24:45.657 回答