在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
有什么建议吗? 谢谢!
答案 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,则上面的命令将非常有效。