2012-07-27 77 views
0

我有一個verilog文件,其中定義了包含各種輸入和輸出變量的多個模塊。 我需要使用sed腳本找出這種變量(輸入/輸出)的最後一次出現。 我運行下面的命令使用SED腳本查找多次出現正則表達式的最後一次出現

地址= sed -n '100,200{/output/=};100,200{/input/=}' file.txt
其給我輸出作爲102 103 104 105 106 而我想僅106 請給我建議一些方法。

回答

1

這可能會爲你工作:當你打算

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

或者是:

address=$(sed '100,200{/input\|output/=};d' file.txt | sed '$!d') 
0
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

0

你不必使用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

0

你可以這樣做:

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

相關問題