如何使用UNIX命令获取完整的语句

时间:2020-02-19 16:25:06

标签: unix sed cut oracle-apps

我们使用的是Oracle Apps,我们还使用UNIX开发程序。在我们的Oracle Apps UNIX程序中,在运行程序时,我们将传递参数,并且参数值将存储在$ 1值中。 $ 1还将包含其他信息,例如实例,什么是程序ID,程序运行的用户名和用户ID等,如下所示

XX_VENDOR_ACH_HOST FCP_REQID=9946271 FCP_LOGIN="APPS/trn12fnd" FCP_USERID=127 FCP_USERNAME="USERNAME" FCP_PRINTER="noprint" FCP_SAVE_OUT=Y FCP_NUM_COPIES=0 "TEST Pay Batch 021120-c"

在这里, TEST Pay Batch 021120-c 是唯一的参数值。现在,我需要获取此参数值。所以,我写了如下命令

echo $1 | cut -d" " -f9 | sed 's/"//g'

但是,它只是打印单词 TEST (测试)而不是完整值。谁能帮我用完整的命令来获取 TEST Pay Batch 021120-c

关于, Srivathsava

2 个答案:

答案 0 :(得分:1)

假设;

  • 参数值用双引号引起来
  • 参数值位于$1的末尾

那又怎么样;

echo "$1" | sed 's/.*"\([^"]\+\)"$/\1/'

输出:

TEST Pay Batch 021120-c

如果我的假设不正确,并且参数值字符串包含 一些独特的特征(例如,以TEST Pay Batch开头), 请告诉我。然后,我将调整正则表达式以提取参数值。

答案 1 :(得分:0)

假设参数值位于$1的末尾,可以执行以下操作:

echo $1|awk -F\" '{print $(NF-1)}'
相关问题