我确实有一个带有标题和详细信息的固定宽度平面文件。它们都可以通过第一个字符识别: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
第一个是 gawk 特定的并且有效,因为在 gawk 中“如果 [of FS] 的值是空字符串 (""),则记录中的每个字符都成为一个单独的字段。”
$ awk 'BEGIN {FS=""; f[1]="header.txt"; f[2]="detail.txt"}
{i=$1; sub(/^./,""); print > f[i]}' file
$ 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
一个应该与任何 awk 一起工作的:
$ awk '/^1/ {f="header.txt"}
/^2/ {f="detail.txt"}
{sub(/^./,""); print > f}' file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句