如何删除多行字符串中每行的前40个字符?
解决字符串截取与分支名简化问题
嘿,我来帮你搞定这个字符串处理的需求!不管是用命令行快速搞定,还是写代码集成到项目里,这里都有合适的方案:
方法一:用Bash命令快速处理(适合终端/文本文件场景)
如果你的原始内容是在文本文件里,或者是其他命令的输出结果,用cut+sed的组合就能一步到位:
第一步:删除每行前40个字符
假设你的原始内容存在branches.txt文件中,执行这条命令就能直接输出去掉前40字符的内容:
cut -c 41- branches.txt
要是你直接在终端输入原始字符串,也可以用管道传递:
echo "9e600771af0eb709982673ca996dc632eacbd99c refs/heads/branch0 87499732f46076c8c054ec91b0fa71d8a720d09e refs/heads/branch1 bd274092d4126b023f7580aef30baf141ca8983b refs/heads/branch2 e27cc492e1d146b12c24ffbe0b58cfe9ea114e26 refs/heads/branch3" | cut -c 41-
执行后会得到:
refs/heads/branch0
refs/heads/branch1
refs/heads/branch2
refs/heads/branch3
第二步:简化为纯分支名
接着用sed替换掉refs/heads/前缀,把命令扩展一下就行:
cut -c 41- branches.txt | sed 's/refs\/heads\///'
或者用cut按/分割取最后一段,效果一样:
cut -c 41- branches.txt | cut -d '/' -f 3
两种方法都会得到你想要的最终结果:
branch0
branch1
branch2
branch3
方法二:用Python脚本处理(适合代码集成场景)
如果需要把这个逻辑写到项目代码里,Python的字符串操作会更灵活:
original_str = """9e600771af0eb709982673ca996dc632eacbd99c refs/heads/branch0 87499732f46076c8c054ec91b0fa71d8a720d09e refs/heads/branch1 bd274092d4126b023f7580aef30baf141ca8983b refs/heads/branch2 e27cc492e1d146b12c24ffbe0b58cfe9ea114e26 refs/heads/branch3""" # 按行拆分原始字符串 lines = original_str.split('\n') branch_names = [] for line in lines: # 跳过空行(防止异常) if not line: continue # 截取第40个字符之后的内容 trimmed_line = line[40:] # 拆分出最后一段分支名 name = trimmed_line.strip().split('/')[-1] branch_names.append(name) # 输出结果 print('\n'.join(branch_names))
运行脚本后会直接输出:
branch0 branch1 branch2 branch3
这样不管是快速批量处理文本,还是集成到代码里,都能完美解决你的需求~
内容的提问来源于stack exchange,提问作者Akalonda
相关产品推荐
相关产品推荐

