【发布时间】:2019-05-21 18:10:36
【问题描述】:
我目前有一个包含类似以下值的变量:
x_snd_user=''
x_snd_appli=''
x_snd_text=''
x_rcv_user=''
x_rcv_appli=''
x_rcv_text=''
x_dup_from_xfer='0'
x_route_from_xfer='0'
x_route_to_xfer='0'
x_reply_by_xfer='0'
x_reply_to_xfer='0'
x_routed_to_XIB='N'
x_end_xfer_script=''
x_ftp_command=''
例如,我如何匹配 3 个模式 (x_snd_appli, x_route_from_xfer, x_ftp_command)、格式化模式 (awk -F"'" '{print $2}') 并将它们分配给不同的变量?
例如,我有变量并想将输出分配给这些:
- Application= The value of <x_snd_appli>
- Route= The value of <x_route_from_xfer>
- Command= The value of <x_ftp_command>
最好不要安装需要安装的东西,因为那是不可能的。 因此,如果可能的话,最好使用 AWK/perl。
变量的完整内容相当大(大约 45 行)并且当我运行脚本 1x 时,它可能会运行大约 1000x。 所以我不想将数据写入文件/循环 10 次以 awk/grep 不同的值并将它们分配给变量。
【问题讨论】:
-
请将该示例输入的所需输出添加到您的问题中。
-
你去吧,我有 3 个变量要存储输出。(实际上我有大约 15 个变量,文本文件更大,所以这只是一个示例输出。)
-
你不能直接在脚本中分配变量名,比如:
Application="The value of $(grep -o "x_snd_appli" /path/file_name)"等等其他...? -
你可以像这样使用
declaredeclare $(awk 'BEGIN{print "var1=x\nvar2=y"}')然后echo $var1和echo $var2。替换你自己的awk东西,但你明白了。 -
通过 shell 循环运行文件并使用 Awk 反复提取单个字段是一种非常常见的反模式,而整个过程作为一个完整的 Awk 脚本将是优雅而微不足道的。你能告诉我们一些你想用这些变量做的事情吗?