You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中删除每行.V之前的内容且保留_V后缀不变

正确文本处理命令实现方案

问题原因

你之前使用的命令出错有两个核心原因:

  • 正则中没有匹配.V里的字面量.,.在正则中默认代表匹配任意字符
  • ^.*V的贪婪匹配规则会匹配到行末尾最后一个出现的大写V,导致后续内容被误删

正确实现命令

Linux 环境(GNU Sed)

直接执行以下命令即可原地修改文件:

sed -i 's/^.*\.V/V/' file.txt

macOS 环境(BSD Sed)

需要为-i参数指定备份后缀,不需要备份的话传入空字符串:

# 不保留原文件备份
sed -i '' 's/^.*\.V/V/' file.txt

# 保留原文件备份为file.txt.bak
sed -i '.bak' 's/^.*\.V/V/' file.txt

正则说明

  • ^匹配行开头
  • .*\.V匹配任意数量的任意字符,直到遇到.V这个固定组合(\.是转义后的字面量点,确保不会匹配其他位置的大写V)
  • 替换为V相当于删除了.V之前的所有内容和分隔符点,完整保留V以及后面的所有内容,包括末尾的_V完全不受影响

处理结果示例

使用你提供的输入文件执行后,输出结果为:

V1204_V
V1405_F
V12_V
V18_Z
V3049_G
V674_T
V901_V
V7_X

内容的提问来源于stack exchange,提问作者Luker354

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:05