2015-11-08 28 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。无论如何,感谢您的帮助。 –