# 方法1 —— 字符比较
#!/bin/bash
str1="hello"
str2="he"
str3="lo"
if [ ${str1:0:2} = $str2 ]; then
echo "$str1 include $str2"
fi
if [ ${str1:2:4} = $str3 ]
then
echo "$str1 include $str3"
else
echo "$str1 not include $str3"
fi
运行结果:
hello include he
hello not include lo
# 方法2 —— grep匹配
#!/bin/bash
str1="hello world"
str2="he"
str3="world "
echo "$str1" | grep -q "$str2"
if [ $? -eq 0 ]; then
echo "$str1 include $str2"
fi
echo "$str1" | grep -q "$str3"
if [ $? -eq 0 ]; then
echo "$str1 include $str3"
else
echo "$str1 not include $str3"
fi
运行结果:
hello world include he
hello world not include world
#方法3 —— 由方法2演变
echo "hello world" | grep -q "he" && echo "include" || echo "not include" # result : include
echo "hello world" | grep -q "world " && echo "include" || echo "not include" # result : not include
#方法4
#!/bin/bash
str1="hello world"
str2="he"
str3="world "
[[ "${str1/$str2/}" != "$str2" ]] && echo "include" || echo "not include"
[[ "${str1/$str2/}" != "$str2" ]]
if [ $? -eq 0 ]; then
echo "$str1 include $str2"
fi
运行结果:
include
hello world include he
#方法5 ——expr 命令
expr有模式匹配功能,可以通过指定冒号选项计算字符串中字符数,.* 即任何字符重复0次或多次
expr 计算字符数:
expr "accounts.doc" : '.*' # result : 12
expr 截取字符串
expr "accounts.doc" : '\(.*\).doc' # result :accounts
expr substr "hello world" 1 7 # result :hello w
expr index "hello world" w # result :7
substr 和 index 配合使用:
expr substr "hello world" 1 $(expr index "hello world" w) # result :hello w
#方法6——awk的index函数
awk 'BEGIN{info="this is hello world"; print index(info, "hello") ? "include" : "not include";}' # result : include
awk 'BEGIN{info="this is hello world"; print index(info, "helo") ? "include" : "not include";}' # result : not include
${var#...}
${var%...}
${var/.../...}
grep 精确匹配
1) echo "hello hellos hell" | grep hell # result : hello hellos hell
2) echo "hello hellos hell" | grep -w hell # result : hello hellos hell
3) echo "hello hellos hell" | grep "\<hell\>" # result : hello hellos hell
1) 模糊匹配; 2) 单词匹配; 3) 正则域匹配; 推荐方式3)
完整示例:
test.txt
bird
birds
angrybird
angrybirds
angry bird
angry birds
angry birds war
grep.sh
#!/bin/bash
cat test.txt
echo
echo "grep bird test.txt..."
grep birds test.txt
echo
echo "grep -w bird test.txt..."
grep -w birds test.txt
echo
echo "grep "\<birds\>" test.txt..."
grep "\<birds\>" test.txt
运行结果:
bird
birds
angrybird
angrybirds
angry bird
angry birds
angry birds war
grep bird test.txt...
birds
angrybirds
angry birds
angry birds war
grep -w bird test.txt...
birds
angry birds
angry birds war
grep <birds> test.txt...
birds
angry birds
angry birds war
参考推荐:
shell 判断字符串是否存在包含关系
Shell expr的用法
awk 实例
linux awk 内置函数详细介绍(推荐)
Linux 之 shell 比较运算符
分享到:
相关推荐
以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverflow 以及segmentfault。 方法一:利用grep查找 strA=long string strB=string result=$(echo $strA | grep ${strB}) if [[ $result != ]] ...
一些需要注意的脚本问题 计算字符串长度可用的三种方法: 代码如下: echo “$str”|awk ‘{print length($0)}’ expr length “$str” ... 您可能感兴趣的文章:用Shell判断字符串包含关系的方法小结Shel
在处理中文字符串时,理解字符编码和字节序列之间的关系至关重要,以避免出现乱码问题。 总之,处理UTF-8编码的中文字符串时,必须考虑到字符编码的特点,使用适当的方法来计算字符串长度和进行截取。`mb_strlen`和...
在Shell中,字符串可以用单引号或双引号包围。单引号内的内容会原样输出,不进行变量替换,而双引号内则允许变量和转义字符。字符串操作包括拼接、获取长度和截取子字符串。例如,`echo ${#string}`可以输出字符串的...
- `字符串1=字符串2`:当两字符串相等时为真。 - `字符串1!=字符串2`:当两字符串不等时为真。 - `-n 字符串`:当字符串非空时为真。 - `-z 字符串`:当字符串为空时为真。 ##### 7. **整数关系测试** - `-eq`:两...
接着,我们讨论Shell字符串。字符串可以包含字母、数字和其他字符。单引号和双引号在字符串处理中有不同的作用: 1. 单引号字符串不会解析内部的变量,例如`'hello $world'`会原样输出`hello $world`。 2. 双引号...
Shell脚本中的数据类型包括数字和字符串。字符串可以用单引号或双引号包围。单引号内的内容原样输出,不解析变量;双引号内可以包含变量和转义字符。要获取字符串长度,可以使用`${#string}`。获取子字符串,使用`${...
- **单引号**:保护字符串不被解析,即在单引号内的任何内容都被视为字面量,不会进行变量替换或命令替换。例如:`echo 'Hello, $USER'` 会输出`Hello, $USER`。 #### 五、`var=value`与`export`的区别 - **局部...
赋值时,等号两边不能有空格,如果字符串包含空格,应使用引号将其括起来。例如: ``` Count=5 string="Helloworld!" ``` 读取变量值使用`$`符号,可以通过`echo`命令显示变量内容: ``` echo $Count ``` 若需要通过...
Shell脚本中的运算符主要包含整数测试运算、字符串测试运算、文件测试运算和逻辑运算等。整数测试可以判断两个整数的相等、不等、大于、大于等于、小于或小于等于关系。字符串测试可以进行空字符串测试或模式匹配。...
5. **Shell运算符**:涵盖了Shell的各种运算符,包括算术、关系、布尔、逻辑和字符串运算符,以及文件测试运算符,并通过一个简单的计算器案例来实践这些运算符。 6. **Shell命令输出**:讲解了echo和printf命令...
- `07运算符_字符串运算符.sh`:涉及到字符串的连接(`+`)、比较(`=`, `!=`, `-z`, `-n`)等操作。 3. **条件判断**:`10条件判断.sh`可能包含了`if-else`结构、`case`语句等,它们用于根据不同的条件执行不同的...
- **`$@`**:保存命令行参数列表中的每个参数作为一个单独的字符串,即使参数中包含空格也不会合并。 - **`$*`**:保存所有命令行参数为一个字符串,如果参数之间有空格,会被合并成一个字符串。 #### 十、逻辑操作...
3. Echo命令的使用:Echo是Shell中用来显示指定字符串或变量值的命令。比如“echo hello”就会在命令行输出“hello”。echo命令也可以用于显示变量的值,例如“echo $PATH”会显示环境变量PATH的值。Echo命令是Shell...
解析命令行字符串涉及到字符串处理技巧,如使用`strtok()`函数分隔命令和参数。执行命令时,可能需要利用`fork()`创建子进程,再用`execve()`来执行目标程序。 接下来是`builtin_command.c`,这个文件实现了shell...
Shell字符串 **字符串操作**: - 字符串连接:`str1="$var1 $var2"` - 子串提取:`substring="${string:position:length}"` - 字符串替换:`new_str="${old_str//pattern/replacement}"` #### 12. Shell数组:...