我有我想重命名的表名:这里有一些示例:
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
为了娱乐,您也可以使用rev
和cut
产生相同的输出:
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
这将使用_
作为分离器删除两个字段。