试图在shell脚本中grep部分文件名?

jak*_*115 2 regex shell grep

我有一个非常简单的grep问题,但似乎无法解决它.我有几个这样的文件:

sample.txt
sample7.doc.txt
another_sample.sample.lst.txt
three.txt
Run Code Online (Sandbox Code Playgroud)

...而我只是想在".txt"之前抓住所有内容.我试图在shell脚本中这样做:

ame=`echo $1 | grep -Po "^[A-Za-z0-9]+"`
Run Code Online (Sandbox Code Playgroud)

...但当然只返回第一个"点"之前的部分.有人可以帮助修改这个正则表达式吗?

Fre*_*ihl 7

不需要regexp:

$ basename sample.txt .txt
sample
Run Code Online (Sandbox Code Playgroud)

或使用任何POSIX兼容的shell:

$ echo "$a"
sample.txt

$ y=${a%.txt}

$ echo "$y"
sample
Run Code Online (Sandbox Code Playgroud)

  • @Kent那是Bourne Shell(sh),曾经有过. (2认同)