【问题标题】:Hashing parts of file using sed使用 sed 散列文件的一部分
【发布时间】:2016-02-09 03:46:00
【问题描述】:

我正在创建一个脚本来散列文本的某些部分。关键是,我想用 sed 来做。下面是示例字符串的样子:

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

我有三个问题:

  1. 我想正确匹配“HASHSTART”和“HASHEND”。因此,例如,如果我会找到第一个 HASHSTART,那么我想将所有内容散列到第一个找到的 HASHEND,即使之间有更多的 HASHSTART。
  2. 即使 HASHSTART 和 HASHEND 之间有新行,我也想对其进行哈希处理。
  3. 如果文件末尾有 HASHSTART 而文件末尾没有 HASHEND,我想对之后的所有内容进行哈希处理。

“哈希”是指从 .到@。

所以有了这个输入,输出应该是:

..HASHSTART@@@@@@@@@@@@@@@@@@HASHEND..HASHEND..HASHSTART@@@@@ @@@@@HASHEND....HASHSTART@@@@@@@@@

非常感谢您的帮助。

【问题讨论】:

  • 我尝试过这样的事情: sed 's/(HASHSTART)(.*)(HASHEND)/\1@\3/' 。但问题是给很多@并使其工作。

标签: unix hash sed command


【解决方案1】:

像这样?

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

-vw=3 位置 (2,)

【讨论】:

  • 其实我不确定这是否正常工作。你能在 sed 中做类似的版本吗?我更喜欢使用 sed 而不是 awk。无论如何,谢谢你的帮助。
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 2021-02-03
  • 2011-04-13
相关资源
最近更新 更多