2015-11-08 25 views
0

我正在創建一個腳本來散列文本的某些部分。關鍵是,我想用sed來做。下面是示例串的樣子:使用sed散列文件的部分

..HASHSTART.......HASHSTART..HASHEND..HASHEND..HASHSTART..... .....HASHEND....HASHSTART.........

我有三個問題是:

  1. 我想匹配「HASHSTART」和「HASHEND」正確。因此,例如,如果我會找到第一個HASHSTART,那麼我想將所有內容都散列到HASHEND的第一個找到的位置,即使它們之間存在更多的HASHSTART。
  2. 即使HASHSTART和HASHEND之間有新的界限,我也想散列它。
  3. 如果最後有HASHSTART,並且沒有HASHEND直到文件結尾,我想將所有內容都散列在後面。

「散列」我的意思是從這裏改變。至 @。

所以用這個輸入輸出應該是:

[email protected]@@@@@@@@@@@@@@@@@[email protected]@@@@ @@@@@[email protected]@@@@@@@@

非常感謝您的任何幫助。

+0

我曾嘗試是這樣的:用sed的/(HASHSTART)(HASHEND)/ \ 1 @ \ 3 /(。*)'。 但問題是給許多@並使其工作。 –

回答

0

是否這樣?

awk -F 'HASHSTART' -vw=3 '{i=index($w,"HASHEND");if(i)print substr($w,1,i-1)}' file 

-Vw = 3現在的位置(2,)

+0

其實我不確定這是否正常工作。你能夠在sed中做類似的版本嗎?我寧願使用sed而不是awk。無論如何,感謝您的幫助。 –