Bash命令在两个括号之间找到小数点右边的字符串

时间:2018-11-20 14:34:43

标签: bash unix sed

这是一段代码...

out0::HRSKACTMGT_FNL_ACTN_DECSN_documentation(in)=
begin

out0.hram_cust_acct_actn_in::depends_on(
         in.acct_ref_nb,
         lookup("hrskactmgt interim actn decsn rollup lookup",'keystr').common_rollup_out_num00
         /*   Rule: "Compute hram_cust_acct_actn_in"   */ );


out0.cld_acct_rndm_dgt_2_nb::depends_on(
         in.entp_prty_id,
         lookup("hrskactmgt interim actn decsn rollup lookup",'keystr').common_rollup_out_num01
         );

out0.*::in.*;
end;

这段代码说的是一个数据元素依赖于这些其他数据元素。我想运行一系列sed命令来剥离所有依赖项。我不在乎那里的家属。我只想列出所有依赖项。然后,我可以使用awk删除重复项。因此,对于上面的代码,它将打印出...。

acct_ref_nb
common_rollup_out_num00
entp_prty_id
common_rollup_out_num01

几乎就像我想要的那样,对于每组括号之间的所有文本,在小数点右边打印出字符串值。

2 个答案:

答案 0 :(得分:0)

这有点复杂。我已经尽力了,请检查它是否符合您的要求。

$ cat ab_code.dat
out0::HRSKACTMGT_FNL_ACTN_DECSN_documentation(in)=
begin

out0.hram_cust_acct_actn_in::depends_on(
         in.acct_ref_nb,
         lookup("hrskactmgt interim actn decsn rollup lookup",'keystr').common_rollup_out_num00
         /*   Rule: "Compute hram_cust_acct_actn_in"   */ );


out0.cld_acct_rndm_dgt_2_nb::depends_on(
         in.entp_prty_id,
         lookup("hrskactmgt interim actn decsn rollup lookup",'keystr').common_rollup_out_num01
         );

out0.*::in.*;
end;

$ perl -0777 -ne ' { s/(.*)begin(.*?)end;/\2/msg;  while(/(?=::)(.*?)\(.*?\.(.+?)\b.*?\.(.+?)\);/msg) { print "$2\n"."$3\n" } } ' ab_code.dat | grep -v '/\*'
acct_ref_nb
common_rollup_out_num00
entp_prty_id
common_rollup_out_num01

答案 1 :(得分:-1)

像这样用awk获得结果!

awk -F ' . ' ' /,/ { print $2 } ' file