gpt4 book ai didi

awk - 从输入文件中设置 RS

转载 作者:行者123 更新时间:2023-12-05 00:42:30 25 4
gpt4 key购买 nike

我有一个文件,其中前几段定义了文件的一些属性。

第 9 位是记录分隔符。所以记录不是由 \n 分隔,而是由第 9 口的任何内容分隔。

我需要读取这个文件,设置 RS 然后“再次”读取文件,但现在被这个新的记录分隔符分隔。

输入文件(此处记录分隔符为'):

UNA:+,? 'UNB+UNOC:3+4042805000102:14+4016001000655:14+201231:0206+EC33218279A++TL'UNH+1+MSCONS:D:04B:UN:2.3'BGM+7+EC33218279A-1+9'DTM+137:202012310206:203'RFF+Z13:13018'NAD+MS+4042805000102::9'NAD+MR+4016001000655::9'UNS+D'NAD+DP'LOC+172+DE00108108359V0000000000000088446'DTM+163:202012300000?+01:303

awk 程序类似于:

{ RS=substr($0, 9, 1) }
{ do magic }

有没有可能?

最佳答案

如果您从未期望第 9 个字符也会出现在前 8 个字符中,或者如果您不希望在该上下文中将其视为 RS,那么您可以使用 GNU awk 的这种 1-pass 方法多字符 RS 和 RT:

$ awk -v RS='.{9}' 'NR==1{$0=substr(RT,1,8); RS=substr(RT,9,1)} 1' file
UNA:+,?
UNB+UNOC:3+4042805000102:14+4016001000655:14+201231:0206+EC33218279A++TL
UNH+1+MSCONS:D:04B:UN:2.3
BGM+7+EC33218279A-1+9
DTM+137:202012310206:203
RFF+Z13:13018
NAD+MS+4042805000102::9
NAD+MR+4016001000655::9
UNS+D
NAD+DP
LOC+172+DE00108108359V0000000000000088446
DTM+163:202012300000?+01:303

关于awk - 从输入文件中设置 RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73390489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com