0

我正在尝试使用我在工作中继承的一些脚本来解决问题,并想看看是否有人可以破译这个表达式试图完成的内容:

|sed -e 's#\(.\{36\}\)\(.*\)#\1|\2#g' | sed -e 's#\(.\{49\}\)\(.*\)#\1|\2#g'

我试图通过参考手册和谷歌对此进行逆向工程,但没有成功。

谢谢!

4

2 回答 2

2

它的意思是

  • 在每行的前 36 个字符后插入“|”

  • 在该输出中前 49 个字符后插入一个“|”

  • 如果该行包含至少 36 个字符或 49 个字符,则所有这些插入都会完成。

  • 你可以做的更短,这样:

    | sed ' s:^.\{36\}:&|:; s:^.\{49\}:&|: '

于 2012-08-03T16:34:10.450 回答
2

这是两个 sed 语句。第一个在该行的前 36 个字符之后插入一个竖线字符 ('|'),第二个在前 49 个字符之后插入一个竖线字符(包括它在第一步中插入的竖线)。

据我所知,这些可以写得更简洁,效果相同:

|sed -e 's#\(.\{36\}\)#\1|#' | sed -e 's#\(.\{49\}\)#\1|#'
于 2012-08-03T16:35:03.583 回答