有没有工具可以做我想要的工作?我想将文件'one'拆分为以@开头的行,然后是文件名:
$ 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 --
什么是分裂?
用例:
答案 0 :(得分: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
答案 1 :(得分:0)
替代 awk 方法:
awk -F' *|@' '$0~/^@/ && NF==2{fn=$2;next}{ print > fn }' one
-F' *|@'
- 复合字段分隔符(空格或@
)