2016-07-29 43 views
0

我有一個文件,其中包含以下內容。如何從unix中的方括號中提取數字

abc.[1-3].title 
simple.0[1-2].title 

我需要幫助的輸出取如下使用sed的的awk命令。

abc.1.title 
abc.2.title 
abc.3.title 
simple.01.title 
simple.02.title 
+0

請參閱[我如何編輯它](http://stackoverflow.com/posts/38659612/revisions)。對於代碼或示例文件,可以選擇這些行,然後按Ctrl + K使其具有這種效果。 – fedorqui

+0

當然,這將繼續前進。 – Sai

+0

現在可以很好地展示您迄今爲止所嘗試的內容。既然你用awk和sed標記,你必須知道一點! – fedorqui

回答

3

sed的是用於在個別線簡單的替換,即所有。除此之外,例如您目前的問題,您應該使用awk:

$ cat tst.awk 
BEGIN { FS="[][]" } 
{ 
    split($2,r,/-/) 
    for (i=r[1]; i<=r[2]; i++) { 
     print $1 i $3 
    } 
} 

$ awk -f tst.awk file 
abc.1.title 
abc.2.title 
abc.3.title 
simple.01.title 
simple.02.title 

閱讀Arnold Robbins撰寫的Effective Awk Programming第4版。

+1

不錯!我玩過'awk -F'[] [ - ]''{for(i = $ 2; i <= $ 3; i ++)print $ 1 i $ NF}'file'以防止調用split()。 – fedorqui

+1

關於第一句話 - 廢話! Sed也用於製作quines,玩高爾夫球代碼,以及各種其他令人興奮的重要活動! –

+1

@WilliamPursell你是對的。我忘了整個心理鍛鍊方面:-)。我也懷疑一些sed腳本可能會控制天氣... –

相關問題