基于shell,将字符串上奇数位字符与偶数住字符分离
时间: 2023-04-07 08:03:36 浏览: 91
可以使用如下的shell脚本实现:
```
#!/bin/bash
# 输入字符串
read -p "请输入字符串: " str
# 奇数位字符
odd=""
# 偶数位字符
even=""
# 遍历字符串
for (( i=0; i<${#str}; i++ )); do
# 判断奇偶性
if (( i % 2 == 0 )); then
even="${even}${str:i:1}"
else
odd="${odd}${str:i:1}"
fi
done
# 输出结果
echo "奇数位字符: ${odd}"
echo "偶数位字符: ${even}"
```
这个脚本会先让用户输入一个字符串,然后遍历字符串,将奇数位字符和偶数位字符分别存储到两个变量中,最后输出结果。
相关问题
shell从字符串中提取数字,与字符串对比
在 shell 中,可以使用上面提到的方法从字符串中提取数字,并可以使用上面提到的方法进行字符串比较。具体步骤如下:
1. 使用命令替换的方式将字符串中的数字提取出来,例如:
```
num=$(echo "abc123def456" | grep -o '[0-9]\+')
```
这样,变量 `$num` 中就保存了字符串中提取出来的数字。
2. 如果要进行字符串比较,可以使用 `test` 命令或 `[` 命令,例如:
```
if [ "$num" = "123" ]; then
echo "字符串中包含 123"
else
echo "字符串中不包含 123"
fi
```
这样,如果字符串中包含 `123`,则输出 `字符串中包含 123`,否则输出 `字符串中不包含 123`。
3. 如果要进行数字比较,可以将提取出来的数字转换为整数,使用比较操作符进行比较,例如:
```
if [ "$num" -gt 100 ]; then
echo "字符串中包含大于 100 的数字"
else
echo "字符串中不包含大于 100 的数字"
fi
```
这样,如果字符串中的数字大于 `100`,则输出 `字符串中包含大于 100 的数字`,否则输出 `字符串中不包含大于 100 的数字`。注意,比较操作符两边需要有一个空格。
shell查找字符串个数
可以使用grep命令来查找字符串出现的次数,具体命令如下:
```shell
grep -o '要查找的字符串' 文件名 | wc -l
```
其中,`-o`选项表示只输出匹配到的字符串,`wc -l`命令可以统计行数,即字符串出现的次数。
例如,如果要在文件`test.txt`中查找字符串`hello`出现的次数,可以使用以下命令:
```shell
grep -o 'hello' test.txt | wc -l
```
注意,这个命令只能查找整行中的字符串,如果要查找字符串在一行中出现的次数,可以使用`grep -o '要查找的字符串' 文件名 | wc -w`命令。