我正在尝试使用我在工作中继承的一些脚本,并想知道是否有人可以破译这个表达式试图完成的内容:
|sed -e 's#\(.\{36\}\)\(.*\)#\1|\2#g' | sed -e 's#\(.\{49\}\)\(.*\)#\1|\2#g'
我试图通过参考手册和谷歌对此进行逆向工程,但尚未成功。
谢谢!
答案 0 :(得分:2)
这意味着
在每行的前36个字符后插入'|'
在前49个字符后的输出插入'|'
如果该行包含至少36个字符,分别包含49个字符,则完成所有这些插入。
你可以做得更短,所以:
| sed ' s:^.\{36\}:&|:; s:^.\{49\}:&|: '
答案 1 :(得分:2)
这是两个sed语句。第一个在行的前36个字符后插入管道符号('|'),第二个在前49个字符后插入管道符(包括它在第一步中插入的管道)。
据我所知,这些可以写得更简洁,效果相同:
|sed -e 's#\(.\{36\}\)#\1|#' | sed -e 's#\(.\{49\}\)#\1|#'