将参数作为控制编号传递,并获取表名称

  • 本文关键字:获取 参数 控制 编号 bash
  • 更新时间 :
  • 英文 :


我有一个场景,其中有一个带有控制编号和表名的文件,这里有一个例子:

1145|report_product|N|N| 
1156|property_report|N|N

我需要将控制号传递为1156,并且必须将表名获取为PR。一旦我将表名获得为PR,我就需要在上面添加一些文本。

请帮助

假设控制文件为:

# cat controlfile.txt
1145|report_product|N|N
1156|property_report|N|N

要细化某些行,可以使用:

grep 1156 controlfile.txt

如果需要,您可以将其保存到一个变量中:result=$(grep1156 file.txt(

假设您需要在这一行添加一些附加内容。。。。你可以使用:

sed '/^1156/s/$/ 123/' controlfile.txt

这个例子将添加";123〃;在以1156 开始的行的末尾

如果需要,请添加更多细节,如您想要的输出或其他任何内容,以帮助我们更好地了解您的需求。

您需要分两个阶段工作:

  1. 您需要找到包含1156的行
  2. 你需要从那条线上得到信息

为了找到行(如Juranir所示(,您可以使用grep:

Prompt> grep "1156" control.txt
1156|property_report|N|N

为了从该行获取信息,您需要根据垂直行(通常称为"管道"字符(获取第二列,对此有不同的方法。我给你两个:

  1. cut方法:您可以将一行切割成不同的部分,并取一个字符、一个字节、一列。。。。在这种情况下,这就是您所需要的:

    grep "1156" control.txt | cut -d '|' -f 2
    -d '|' : use the vertical line as a column separator
    -f 2   : show the second field (column)
    
  2. CCD_ 3方法:CCD_;文本修饰符";具有多种功能(显示文本的部分,执行基本计算,…(。对于这种情况,它可以如下使用:

    grep "1156" control.txt | awk -F '|' '{print $2}'
    -F '|'       : use the vertical line as a column separator
    '{print $2}' : the awk script for showing the second field.
    

哦,顺便说一下,我已经编辑了你的问题。您可以按下编辑按钮来了解我是如何做到这一点的:-(

只获取由下划线分隔的第一个字母:

grep "1156" control.txt | awk -F '|' '{print $2}' | awk -F '_' '{print substr($1,1,1) substr($2,1,1)}'

最新更新