从末端短语中删除下划线



我有我想重命名的表名:这里有一些示例:

AB_DC_JDZOJZD_HST_2090
AB_DC_JDZODSJOJZD_HIST_2500
AB_DC_JDZ_JJKOJZD_HIT_2050

但我想要:

AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD

我的问题是:如何从单词的末尾删除

假设您想删除_界定的最后两个 fields ,您可以说:

sed -r 's/(_[^_]*){2}$//' filename

对于您的输入,它会产生:

AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD

为了娱乐,您也可以使用revcut产生相同的输出:

rev filename | cut -d_ --complement -f1,2 | rev

只需在shell中使用参数扩展:

while read word; do echo "${word%_*_*}"; done <<END
AB_DC_JDZOJZD_HST_2090
AB_DC_JDZODSJOJZD_HIST_2500
AB_DC_JDZ_JJKOJZD_HIT_2050
END
AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD

您可以使用awk

awk -F_ '{NF-=2}8' OFS="_" file
AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD

这将使用_作为分离器删除两个字段。

相关内容

  • 没有找到相关文章

最新更新