linux - 如何在 Linux shell 中根据第一个字符拆分文件
问题描述
我确实有一个带有标题和详细数据的固定宽度平面文件。它们都可以通过第一个字符来识别:1 表示标题,2 表示详细信息。
我想从我的固定宽度文件中生成 2 个不同的文件,每个文件都有自己的记录集,但没有写入类型记录。
文件 Header.txt 只有类型 1 记录。文件 Detail.txt 只有类型 2 记录。
请让我知道我们如何实现这一目标。
示例平面文件:
120190301,025712,FRANK,DURAND,USA
20257120023.12
20257120000.21
20257120191.45
120190301,025737,ERICK,SMITH,USA
20257370000.29
20257370326.41
120190301,025632,JOSEPH,SILVA,USA
20256320019.57
20256320029.12
20256320129.04
期望的输出:
页眉.txt
20190301,025712,FRANK,DURAND,USA
20190301,025737,ERICK,SMITH,USA
20190301,025632,JOSEPH,SILVA,USA
详情.txt
0257120023.12
0257120000.21
0257120191.45
0257370000.29
0257370326.41
0256320019.57
0256320029.12
0256320129.04
解决方案
awk '{if(/^1/){ sub(/^./,""); print > "Header.txt" }else{sub(/^./,""); print>"Detail.txt"}}' flatfile
如果一行的第一个字符匹配1
,则剥离第一个字符并将行写入到Header.txt
,否则剥离第一个字符并将行写入到Detail.txt
。
输出:
cat Header.txt
20190301,025712,FRANK,DURAND,USA
20190301,025737,ERICK,SMITH,USA
20190301,025632,JOSEPH,SILVA,USA
第二个:
cat Detail.txt
0257120023.12
0257120000.21
0257120191.45
0257370000.29
0257370326.41
0256320019.57
0256320029.12
0256320129.04
推荐阅读
- java - how pattern syntax exception works
- excel - 切片器的迭代在 Excel VBA 中不起作用
- powershell - Jenkins、Powershell 插件和 Windows 安全更新 KB5004285
- javascript - PDF 表单:使文本字段在打印时可见
- flutter - 来自http请求的数据将字符串转换为颤振中的LatLng列表
- c++ - epoll struct epoll_data 已设置但稍后返回未初始化
- google-cloud-platform - GCP - 身份感知代理 - 如何检索 OAuth 2.0 凭据?
- ruby - 在 Ruby 中压缩 2 个以上的变量
- maven - 想在我的 Maven 创建的 JAR 文件中添加内部版本号
- windows-terminal - 如何从“聚焦”模式调整 Windows 终端设置?