需要使用awk从HL7文件中检索值

时间:2018-12-04 21:43:25

标签: awk hl7

在Linux脚本程序中,我有以下awk命令用于其他目的并重命名文件。

      cat $edifile | awk -F\| '
        { OFS = "|"
          print $0
        } ' | tr -d "\012" > $newname.hl7

在发生这种情况时,我想抓取MSH段的第5个字段并将其保存以供以后在脚本中使用。这可能吗? 如果没有,我晚些时候怎么办? 该细分示例。

MSH | ^〜\&| business1 | business2 | /u/tmp/TR0049-GE-1.b64 | routing | 201811302126 || ORU ^ R01 | 20181130212105810 | D | 2.3

我想做的是在MSH 5中检索路径和文件名,并将其连接到新文件的末尾。

我用它来捕获数据,但是没有运气。如果设置了fpth,则没有任何证据,并且我在awk短语中没有正确的回声语法。

      cat $edifile | awk -F\| '
        { OFS = "|"
          {fpth=$(5)}
          print $0
        } ' | tr -d "\012" > $newname.hl7

有什么建议吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

尝试

filename=`awk -F'|' '{print $5}' $edifile | head -1`

如果文件为单行,则可以跳过通过 head 的管道

答案 1 :(得分:0)

首先,必须提到的是,第一段代码中的tableView行的使用为零:

.none

这完全等同于

awk

因为$ cat $edifile | awk -F\| ' { OFS = "|"; print $0 }' | tr -d "\012" > $newname.hl7 仅用于在重新定义字段时重新定义$ cat $edifile | tr -d "\012" > $newname.hl7

示例:

OFS

我知道您有一个$0文件,其中有一行以字符串“ MSH”开头。在此行中,您要存储第5个字段:这是通过以下方式实现的:

$ echo "a|b|c" | awk -F\| '{OFS="/"; print $0}'
a|b|c
$ echo "a|b|c" | awk -F\| '{OFS="/"; $1=$1; print $0}'
a/b/c

我已将ORS替换为空字符集,因为它等效于hl7。如果您的文件中只有一个MSH,则上面的命令将非常有效。