2016-02-08 59 views
0

我有一些很難找到字符串(專題鏈接),然後用awk追加一個遞增的數字代替。AWK字符串搜索,並附加遞增的編號

我有以下的HTML文件,是一點整行:

<a class="topic-link" href="test.com/topic/gastrointestinal">Gastrointestinal</a>, <a class="topic-link" href="test.com/topic/nutrition">Nutrition</a>, <a class="topic-link" href="test.com/topic/weight-gain">Weight Gain</a> </p> 

用awk我試圖獲得:

<a class="topic-link1" href="test.com/topic/gastrointestinal">Gastrointestinal</a>, <a class="topic-link2" href="test.com/topic/nutrition">Nutrition</a>, <a class="topic-link3" href="test.com/topic/weight-gain">Weight Gain</a> </p> 

我運行的是以下幾點:

awk '{gsub("topic-link","topic-link"++i)}1' input file > output file 

的問題是,結果將是如下:

<a class="topic-link1" href="test.com/topic/gastrointestinal">Gastrointestinal</a>, <a class="topic-link1" href="test.com/topic/nutrition">Nutrition</a>, <a class="topic-link1" href="test.com/topic/weight-gain">Weight Gain</a> </p> 

的解決方案,我想出了才能正常工作如果「主題鏈接」的情況下,是在單獨的行,因此我堅持。

請告訴我,我失去了一些東西很明顯這裏或者如果你有一個替代辦法的任何建議。

謝謝!

Rylan

回答

1

你的gsub()只被調用一次,所以我只增加一次。你需要一個循環:

$ awk '{i=0; while(sub(/topic-link"/,"topic-link"++i"\""));} 1' file 
<a class="topic-link1" href="test.com/topic/gastrointestinal">Gastrointestinal</a>, <a class="topic-link2" href="test.com/topic/nutrition">Nutrition</a>, <a class="topic-link3" href="test.com/topic/weight-gain">Weight Gain</a> </p> 
+0

謝謝埃德這做了詭計。我想我需要一個循環,但不知道用awk這樣做的正確語法/過程。我會說我需要刷新我的谷歌/ stackoverflow搜索fu前進。 – rylan

+0

不客氣。我建議您將問題保留幾小時,以查看您是否願意接受答案,然後單擊答案旁邊的複選標記,您認爲問題最終能夠解決問題。另外 - 學習如何操作文本的最好方法是閱讀Arnold Robbins編寫的「有效的Awk編程」第4版。 –