bash - grep 特定值用作使用 awk 的数据中的文件名
问题描述
我有一个包含如下数据的文件
* sub : A
111
------------------
* sub : B
222
-------------------
* sub : C
333
--------------------
我必须根据值“-----------------”的结尾将这些数据分成 3 个不同的文件。我已经编写了代码来分隔文件。
但是,现在我必须取出写在“sub:”之后的值名称,如 A、B、C 并在输出文件名中使用它。
我在下面写的代码:
cat SAMP.txt | awk 'BEGIN{RS="-----+";i=1} {print $0>i".sql"}{i++}'
如何将其修改为来自 sub 的 grep 值并在 i 中使用它并将文件名设为 A.sql 、 B.sql 和 C.sql 。
解决方案
我想这就是你想要的...
$ awk -v RS='-----+' '{print > ($4".sql")}' file
这些变化可能更强大
$ awk -F: 'NF>1 && !f {f=$NF".sql"}
/------+$/ {close(f); f=""; next}
{print > f}' file
生产
$ head *.sql
==> A.sql <==
* sub : A
111
==> B.sql <==
* sub : B
222
==> C.sql <==
* sub : C
333
推荐阅读
- c++ - C++ http 程序返回 505 HTTP Version Not Supported 错误
- python - 找到总和为 N 的对的更好方法
- javascript - 错误“在没有配置数组的情况下调用 Sequential.fromConfig”
- javascript - 如何让 TypeScript Array.map() 返回与 VanillaJS 相同的值?
- python - Jupyter Notebook 中没有名为“graphviz”的模块
- javascript - 内部错误:Metro Bundler 遇到内部错误 [重复模块]
- javascript - 在Angular 4中将文件上传到Google驱动器中的特定文件夹
- python - 将列表与循环的 txt 文件进行比较
- selenium - 在 Cucumber 概览报告中添加新列
- css - 顶部/底部填充溢出滚动一般屏幕