当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在shell脚本中进行字符串操作的最佳方法是什么?》经验,为你挑选了2个好方法。

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

/usr/userName/config.cfg

要么

../config.cfg

我想提取文件名(在最后一个之后的部分,所以在这种情况下:"config.cfg")

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

Shell脚本的字符串操作功能本身看起来非常具有初衷性,并且显得非常深奥.

任何示例解决方案也受到赞赏.



1> guns..:

如果您对使用bash没问题,可以使用bash字符串扩展:

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

它有点神秘,但是大括号开始变量扩展,而double hash从字符串的开头贪婪地删除指定的glob模式.

Double %%在字符串末尾执行相同的操作,单个百分比或散列执行非贪婪删除.

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

FILE=${FILE// /_}

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

再次单一斜线,非贪婪.


+1.这个解决方案比执行外部命令要快得多,但正如枪所提到的,在这种情况下你应该使用`#!/ bin/bash`.
+1感谢Double Hash/Double Percent贪婪家伙及其单身Hash/Percent非贪婪的解释.那是好事.

2> RobS..:

我只是使用而不是字符串操作

file=`basename "$filename"`

编辑:

感谢放松一些新的语法(假设您的文件名保存在$ filename中):

file=$(basename $filename)


为什么在地球上浪费了一百万个CPU周期来实现fork到`basename`?basename只是`$ {filename ##*/}`.**这是最好的方式**.这个答案是关于最糟糕的.
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有