grep文件名但只显示

时间:2015-05-15 16:41:58

标签: bash grep

我的文件名为ACC160-MASTER-201503,ACC160L-MASTER-201503和IS160-MASTER-201503。我基本上试图输出前几个字母(例如,只有ACC和IS),而不是数字。在我需要另一个grep后才能抓到 - (例如...... ACC160,ACC160L和IS160)

感谢您的帮助。目前我认为只能使用grep才能做到这一点。

2 个答案:

答案 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语法
  • .*?是一个不情愿的量词,它在寻找正则表达式中的下一个主题时读到
  • (?=-)是一个前瞻标签:它告诉你在匹配的子串之后会发生什么( - )