在Linux中使用Regex提取字符串子集



我有一个简单的列表,例如以下

ss_Asd_n1_455_9_1
ss_Asd_n1_98_9_32
ss_Asd_n1_562_9_145
ss_Asd_n1_1_9_6

使用Regex Linux我希望列表像Follwing一样修剪

ss_Asd_n1_455_9
ss_Asd_n1_98_9
ss_Asd_n1_562_9 
ss_Asd_n1_1_9

我尝试了以下代码,但没有打印任何输出

grep '[a-z_]*[a-zA-Z]+(_)[v0-9]+(_)[0-9]+(_)[0-9]'

请指导我。预先感谢

看起来您只想sed 's/_[^_]*$//' filename

要在就位编辑文件,请使用sed -i(或者如果您在BSD/MACOS,sed -i '')。

使用grep我会使用perl Regex语法'p',仅匹配匹配部分'o'

echo ss_Asd_n1_455_9_1 | grep -oP '[a-z]*_(?:[a-z]|[A-Z])+_[a-z][0-9]+_[0-9]+_[0-9]+'
ss_Asd_n1_455_9

最新更新