`

shell中${}的妙用 字符串替换

 
阅读更多

原文:http://blog.csdn.net/huang_xw/article/details/12260205

b=${a/123/321};将${a}里的第一个123替换为321
b=${a//123/321};将${a}里的所有123替换为321

 

1. 截断功能
${file#*/}:       拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:    拿掉最后一条/及其左边的字符串:my.file.txt
${file#*.}:       拿掉第一个.及其左边的字符串:file.txt
${file##*.}:    拿掉最后一个.及其左边的字符串:txt
${file%/*}:     拿掉最后条/及其右边的字符串:/dir1/dir2/dir3
${file%%/*}: 拿掉第一条/及其右边的字符串:(空值)
${file%.*}:    拿掉最后一个.及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}: 拿掉第一个.及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
[list]#是去掉左边, ##最后一个
      %是去掉右边, %%第一个
2. 字符串提取 
单一符号是最小匹配﹔两个符号是最大匹配。
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2
3. 字符串替换
${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt
4. 针对不同的变量状态赋值(没设定、空值、非空值):
${file-my.file.txt}: 若$file没有设定,则使用my.file.txt作返回值。(空值及非空值时不作处理)
${file:-my.file.txt}:若$file没有设定或为空值,则使用my.file.txt作返回值。(非空值时不作处理)
${file+my.file.txt}: 若$file设为空值或非空值,均使用my.file.txt作返回值。(没设定时不作处理)
${file:+my.file.txt}:若$file为非空值,则使用my.file.txt作返回值。(没设定及空值时不作处理)
${file=my.file.txt}: 若$file没设定,则使用my.file.txt作返回值,同时将$file 赋值为 my.file.txt。(空值及非空值时不作处理)
${file:=my.file.txt}:若$file没设定或为空值,则使用my.file.txt作返回值,同时将 $file 赋值为 my.file.txt。(非空值时不作处理)
${file?my.file.txt}: 若$file没设定,则将my.file.txt输出至 STDERR。(空值及非空值时不作处理)
${file:?my.file.txt}:若$file没设定或为空值,则将my.file.txt输出至STDERR。(非空值时不作处理)
注意: 
":+"的情况是不包含空值的.
":-", ":="等只要有号就是包含空值(null).

5. 变量的长度
${#file}
6. 数组运算
A=(a b c def)
${A[@]} 或 ${A[*]} 可得到 a b c def (全部组数)
${A[0]} 可得到 a (第一个组数),${A[1]} 则为第二个组数...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部组数数量)
${#A[0]} 可得到 1 (即第一个组数(a)的长度),${#A[3]} 可得到 3 (第四个组数(def)的长度)

分享到:
评论

相关推荐

    shell脚本,批量替换字符串

    将需要替换的文件放到脚本同级目录,直接执行脚本即可。 根据脚本提示输入 替换前和替换后的字符串

    java 文本字符串替换工具

    首先,要实现文本文件中的字符串替换,我们需要读取文件内容,然后使用Java的字符串方法进行替换,最后将更新的内容写回文件。以下是一个简单的示例: ```java import java.io.*; import java.nio.charset....

    shell 批量处理 字符串指令行

    首先,让我们了解一些基本的shell字符串处理命令: 1. **变量赋值**:在shell中,我们可以通过`var="string"`来定义一个字符串变量。 2. **引用**:双引号(`"`)内的变量会被解析,单引号(`'`)内的变量则不会。例如...

    map中的值替换掉字符串中的变量(含运算)

    1. **使用Apache Commons Lang的StrSubstitutor进行变量替换**:首先使用`StrSubstitutor`类从Apache Commons Lang库来完成简单的字符串替换。 2. **使用BeanShell进行表达式计算**:对于含有运算的表达式,则使用...

    shell字符串的截取

    Shell 字符串截取是指在 Shell 编程中对字符串进行截取、查找、替换等操作。下面将详细介绍 Shell 字符串截取的知识点。 一、字符串截取 Shell 字符串截取可以使用多种方法,以下是一些常见的方法: 1. 使用 expr...

    shell 字符串操作

    字符串替换** - **${string#substring}**: 从字符串开头删除最短匹配的子串。 - 示例: ```bash str="Hello World" echo "${str#He}" # 输出: llo World ``` - **${string##substring}**: 从字符串开头删除...

    Shell编程范例之字符串操作-TinyLab原创

    例如,可以利用Shell的参数扩展功能来提取子串,或者使用文本处理工具如sed和awk等来执行复杂的字符串替换和插入操作。字符串的长度可以通过`expr length`命令来获得。而对于字符串的存储结构,除了可以简单地作为...

    批量替换字符串 shell脚本,

    该脚本可以批量替换字符串,将需要替换的文件放到脚本同级目录,直接执行脚本即可。 根据脚本提示输入 替换前和替换后的字符串

    bat文件 字符串提取&替换等操作

    对于字符串替换,我们可以利用`REPLACE`命令或在批处理文件中编写简单的批处理逻辑。`REPLACE`命令在目标文件中直接替换指定的字符串,但不适用于文本流。如果需要在变量中进行替换,可以使用`SET`命令配合`FOR /F`...

    字符串的查找与替换(写入到文件中)

    将字符串写入文件,然后查找相应的字符串,并进行替换。

    Shell脚本中变量与字符串操作的实战指南

    使用场景及目标:帮助读者理解并运用Shell脚本中的变量和字符串相关概念,通过实际例子加深理解,以便能够在日常工作中更高效地编写维护脚本,实现任务自动化和系统管理等功能。 其他说明:建议读者跟随文中提供的...

    BASH 中的字符串处理

    六、字符串替换 - `echo ${str//pattern/replacement}`:全局替换字符串中所有匹配的pattern为replacement。 - `echo ${str/#pattern/replacement}`:如果字符串以pattern开头,替换它。 - `echo ${str/%pattern/...

    shell浅谈之六字符串和文件处理.docx

    在Bash Shell中,字符串和文件处理是两个重要的概念,它们极大地增强了用户对文本数据的操控能力。在本文中,我们将主要探讨字符串处理,并简单提及文件处理的一些基本操作。 一、字符串处理 1. `expr` 命令 `...

    shell 操作字符串

    本文将深入探讨Shell如何进行字符串操作,特别是变量替换、变量扩充、变量中的变量以及变量的特异功能,帮助读者更熟练地掌握Shell编程技巧。 #### 变量替换:简单赋值与替换 在Shell中,可以使用`=`运算符为变量...

    Shell字符串比较相等、不相等方法小结

    在Shell脚本编程中,字符串比较是...这些是比较和操作Shell字符串的基本方法。通过理解这些概念和操作符,可以更有效地编写处理字符串的Shell脚本。在实际应用中,应根据具体需求选择合适的方法进行字符串比较和处理。

    命令行下替换文本文件中字符串的小程序

    本文将详细介绍如何使用命令行工具来实现文本文件中的字符串替换,以"命令行下替换文本文件中字符串的小程序"为例,该程序名为`txtreplace`。 `txtreplace`是一个简单实用的命令行工具,它的主要功能是在指定的文本...

    linux shell 字符串操作(长度,查找,替换)详解

    字符串替换功能非常实用,尤其在处理文件路径、URL等场景中,经常需要对某些特定部分进行替换或修改。 示例: ```bash url="http://www.example.com" new_url=${url/http/https} echo $new_url # 输出:...

    shell 使用指定的分割符来分割字符串的方法

    方法一:使用字符串替换 这种方法适用于不包含空格的字符串。我们通过字符串操作将分隔符替换为空格,然后使用默认的IFS(Internal Field Separator)来分割字符串。在示例中,我们使用的是逗号作为分隔符: ```...

    shell三剑客过滤文件内字符串长度输出

    当我们需要过滤文件中的内容,例如根据字符串长度进行筛选时,这三者都能发挥重要作用。下面我们将详细介绍如何使用awk、grep和sed来过滤文件内字符串长度并输出。 **awk** 是一个功能强大的文本分析工具,它能够...

    Shell中去除字符串里的空格或指定字符的方法

    在Shell中,如果要删除字符串开头的空格或制表符,可以使用`sed`命令。例如: ```bash text=" 123 456 " text=`echo $text | sed -e 's/^[ \t]*//g'` ``` 上述代码中的`sed`命令通过正则表达式`^[ \t]*`匹配...

Global site tag (gtag.js) - Google Analytics