regex - 在 shell 脚本中进行字符串操作的最佳方法是什么?

标签 regex string bash shell

我在 shell 脚本中有一个字符串形式的路径,可以是绝对路径或相对路径:

/usr/用户名/config.cfg

../config.cfg

我想提取文件名(最后一个/之后的部分,因此在本例中为:“config.cfg”)

我认为最好的方法是使用一些简单的正则表达式? 它是否正确?我应该还是应该改用 sed 或 awk?

Shell 脚本的字符串操作功能本身看起来非常原始,而且看起来非常深奥。

也欢迎任何示例解决方案。

最佳答案

如果您不介意使用 bash,则可以使用 bash 字符串扩展:

FILE="/path/to/file.example"
FILE_BASENAME="${FILE##*/}"

有点神秘,但是大括号开始变量扩展,双散列从字符串的开头贪婪地删除指定的 glob 模式。

双 %% 从字符串末尾开始执行相同的操作,而单个百分比或哈希执行非贪婪删除。

此外,还提供了一个简单的替换结构:

FILE=${FILE// /_}

例如,将用下划线替换所有空格。

又是一个单斜杠,是非贪婪的。

关于regex - 在 shell 脚本中进行字符串操作的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638991/

相关文章:

正则表达式匹配一个或多个字符

p#q#c# 的 R 正则表达式

php - 如何从 PHP 和 Javascript 中的字符串中删除所有空格

c - 在C中初始化字符串;以下有用吗?

linux - wget递归下载之间的Grep文件

python - 匹配字符串中的所有标识符

python - 正则表达式有额外的斜杠

c++ - 如果字符串中有空格,String.size() 返回不正确的数字

bash - Hadoop 2.7.1安装没有bashrc吗?

python - 在 bash 脚本中使用反引号,将 python 脚本调用到变量中以前可以工作,但现在已损坏