使用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}'
你不必使用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
有一个变量$地址,它具有所有这些值101 102 103 ..请告诉我如何找出这个变量中的最后一个值。 – 2012-07-27 10:48:14
@ user1468315检查更新的答案,不知道它是否是你想要的。 – Kent 2012-07-27 10:53:44
还有一个问题,我想将这个值保存在另一个变量中。 – 2012-07-27 11:05:26
你可以这样做:
nl -ba < file.txt | sed -n '100,200{/output\|input/h};$x;$p'
或者(我敢说呢?)'cat -n file.txt' :) – potong 2012-07-28 07:02:00
'cat -n'在IEEE标准1003.1-2008下没有标准化,但'nl -ba'是。 (但'cat -n'可能可用!) – 2012-07-28 20:34:44
它没有给我行号,但给出的模式出现后最后input/output.plz帮助! – 2012-07-27 10:33:50
@ user1468315更新。 – slitvinov 2012-07-27 11:04:08