切割:使用“/”作为分隔符。

7

我正在尝试在我的bash脚本中使用cut命令。我需要获取一个rpm包的名称,该包的名称中包含“sys”,但不包括其完整路径。因此,我尝试了以下命令:

packageName=$(find temp/noarch/ -name '*sys*noarch.rpm' | cut -d "\/" -f 3)

我认为这种方法可以返回包的名称而不包括temp/noarch/,但它只告诉我。

我知道我可以删除子字符串"temp\/noarch\/",但我想用cut命令实现。

1个回答

13

"\/" 无法扩展为 /,因此 cut 报错:

cut: the delimiter must be a single character

请使用普通的/代替:

packageName=$(find temp/noarch/ -name '*sys*noarch.rpm' | cut -d/ -f3)

奇怪的是Linux不需要在这里接收\/。无论如何,一切都很好,非常感谢。 - Eos
@Eos:奇怪?在哪里需要在斜杠之前加反斜杠? - choroba
我正在处理带有路径的文件。因此,当搜索这些路径时,我使用了 "path\/of\/a\/file\/" 进行字符转义。我习惯了这种方式。这是我的疏忽。 - Eos
请看这篇文章:https://dev59.com/_WUo5IYBdhLWcg3wxBse - codeforester
如何使用 "! ... ?" ? - mjs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接