如何删除“-”后的文字?

Rap*_*ael 6 command-line scripts text-processing

我有一个文件列表(基本上它们是.deb包)。让我们说:

abc-de-1.2.3-1.deb
fgh-ij-4.5.6-2.deb
klm-no-7.8.9-3.deb
pqrs-10.11.12-4.deb
...
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,一些文件名在一些文件名之后有数字,-而另一些文件名在 a 之后有一些文本-,然后在 next之后有数字-

有什么方法可以删除从数字开始的所有内容,包括-,即

abc-de
fgh-ij
klm-no
pqrs
...
Run Code Online (Sandbox Code Playgroud)

我想编辑列表,而不是重命名文件。

Zan*_*nna 8

如果您能够使用第一个数字来标识每次要删除的内容,则可以使用:

$ sed 's/-[0-9].*//' file
abc-de
fgh-ij
klm-no
pqrs
Run Code Online (Sandbox Code Playgroud)

笔记

  • s/old/new/替换oldnew
  • [0-9] 一些数字
  • .* 任意数量的任意字符


Rav*_*ina 6

使用grepPerl的正则表达式:

$ grep -Po "^[a-z-]*(?=-[0-9])" filename
abc-de
fgh-ij
klm-no
pqrs
Run Code Online (Sandbox Code Playgroud)

  • 不错,很不错。 (2认同)