unix - 在文件末尾匹配后拆分文件并将匹配保留在文件 unix 中
问题描述
我有一个包含随机行和关键词END的文件:
line 1
line 2
...
line 23
END
line 25
....
line 40
END
我想根据关键字 END 将其拆分为多个文件,并将其放在每个文件中:文件 1
line 1
line 2
...
line 23
END
文件 2
line 25
.....
line 40
END
我试过了:
csplit -k file_name '/END/' '{*}' but i do not get the correct output.
解决方案
向正则表达式添加偏移量 1 以将匹配项包含END
在当前文件中。我还添加^
并$
锚定了正则表达式。
csplit -k file -f file --elide-empty-files '/^END$/1' '{*}'
-f file
设置输出文件名前缀--elide-empty-files
这是一个 GNU 扩展并且不输出空文件(在这种情况下是一个空文件file02
)
输出:
$ head file0*
==> file00 <==
line 1
line 2
...
line 23
END
==> file01 <==
line 25
....
line 40
END
推荐阅读
- linux - 用于根据文件类型将文件夹移动到相应文件夹的 Shell 脚本
- javascript - Electron - fs.readdir 回调有时不会在重新加载时执行
- android - Firestore Recycler 在一个页面(实例)中加载,但不在另一个页面中
- apache - 告诉浏览器不再指向 https,而是现在指向 http
- clickonce - 桌面应用程序用户能否从位于 LAN 服务器上的 CNG 密钥库中检索密钥
- react-native - React-native:index.js:Transformer.transform 不是函数
- typescript - Vue typescript 递归组件
- angular - 如何在飞行中取消待处理的 http api 调用?
- flutter - ListView 到达结束前的网络请求。延迟加载
- css - 将 props 传递给 ReactMarkdown 样式组件的语法