我有要重命名的表名: 这里有一些例子:
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
我的问题是: 如何从单词的末尾删除 ?
答案 0 :(得分:4)
假设您要删除_
分隔的最后两个字段,您可以说:
sed -r 's/(_[^_]*){2}$//' filename
为了您的输入,它会产生:
AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD
为了好玩,您还可以使用rev
和cut
来生成相同的输出:
rev filename | cut -d_ --complement -f1,2 | rev
答案 1 :(得分:1)
只需在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
答案 2 :(得分:0)
您可以使用awk
awk -F_ '{NF-=2}8' OFS="_" file
AB_DC_JDZOJZD
AB_DC_JDZODSJOJZD
AB_DC_JDZ_JJKOJZD
这将使用_
作为分隔符删除最后两个字段。