我的文件名为ACC160-MASTER-201503,ACC160L-MASTER-201503和IS160-MASTER-201503。我基本上试图输出前几个字母(例如,只有ACC和IS),而不是数字。在我需要另一个grep后才能抓到 - (例如...... ACC160,ACC160L和IS160)
感谢您的帮助。目前我认为只能使用grep才能做到这一点。
答案 0 :(得分:1)
如果这是bash / ksh / zsh / sh / ...,只需使用parameter substitution:
for file in ACC160-MASTER-201503 ACC160L-MASTER-201503 IS160-MASTER-201503; do
alnum=${file%%-*} # remove the first "-" and following chars
alpha=${alnum%%[0-9]*} # remove the first digit and all following chars
echo "$file => $alnum => $alpha"
done
ACC160-MASTER-201503 => ACC160 => ACC
ACC160L-MASTER-201503 => ACC160L => ACC
IS160-MASTER-201503 => IS160 => IS
答案 1 :(得分:0)
如果您希望获取所有文件名,直到第一个' - ',那么grep -oP ".*?(?=-)"
就可以了。
-o
是唯一匹配的选项-P
启用Perl语法.*?
是一个不情愿的量词,它在寻找正则表达式中的下一个主题时读到(?=-)
是一个前瞻标签:它告诉你在匹配的子串之后会发生什么( - )