使用SED脚本查找多次出现正则表达式的最后一次出现

问题描述:

我有一个verilog文件,其中定义了包含各种输入和输出变量的多个模块。 我需要使用sed脚本找出这种变量(输入/输出)的最后一次出现。 我运行下面的命令使用SED脚本查找多次出现正则表达式的最后一次出现

地址= sed -n '100,200{/output/=};100,200{/input/=}' file.txt
其给我输出作为102 103 104 105 106 而我想仅106 请给我建议一些方法。

这可能会为你工作:当你打算

sed '100,200{/input\|output/=};d' file.txt | sed '$!d' 

或者是:

address=$(sed '100,200{/input\|output/=};d' file.txt | sed '$!d') 

sed -n '100,200p' foo.txt | awk '/input/{s=NR} /output/{s=NR} END{print s}' 
+0

它没有给我行号,但给出的模式出现后最后input/output.plz帮助! – 2012-07-27 10:33:50

+0

@ user1468315更新。 – slitvinov 2012-07-27 11:04:08

你不必使用sed,当然sed/awk可以。试试这个:

grep -nE "input|output" test.txt|tail -1|cut -f1 -d: 

编辑

你要吗?

kent$ echo "102 103 104 105 106"|awk '{print $NF}' 
106 

编辑再次

kent$ another=$(echo "102 103 104 105 106"|awk '{print $NF}') 

kent$ echo $another 
106 
+0

有一个变量$地址,它具有所有这些值101 102 103 ..请告诉我如何找出这个变量中的最后一个值。 – 2012-07-27 10:48:14

+0

@ user1468315检查更新的答案,不知道它是否是你想要的。 – Kent 2012-07-27 10:53:44

+0

还有一个问题,我想将这个值保存在另一个变量中。 – 2012-07-27 11:05:26

你可以这样做:

nl -ba < file.txt | sed -n '100,200{/output\|input/h};$x;$p' 
+0

或者(我敢说呢?)'cat -n file.txt' :) – potong 2012-07-28 07:02:00

+0

'cat -n'在IEEE标准1003.1-2008下没有标准化,但'nl -ba'是。 (但'cat -n'可能可用!) – 2012-07-28 20:34:44