使用shell脚本编写找出字符串只出现一次的字符
时间: 2024-01-23 16:49:18 浏览: 21
可以使用awk命令实现:
```shell
echo "abcaabbcc" | awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)a[$i]++}END{for(i in a){if(a[i]==1)print i}}'
```
解释:
- `echo "abcaabbcc"`:将字符串输出到标准输出。
- `awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)a[$i]++}END{for(i in a){if(a[i]==1)print i}}'`:使用awk命令处理字符串。
- `BEGIN{FS=""}`:设置输入字段分隔符为空格,这样每个字符都会被当做一个字段。
- `for(i=1;i<=NF;i++)a[$i]++`:遍历每个字符,将其出现次数存储在数组`a`中。
- `END{for(i in a){if(a[i]==1)print i}}`:在处理完字符串后,遍历数组`a`,输出出现次数为1的字符。
输出结果为:
```
b
```
即只出现一次的字符为`b`。
相关问题
shell脚本使用变量替换字符串
在shell脚本中,我们可以使用变量替换来操作字符串。变量替换有多种形式,如下所示:
1. `${变量名}`:用变量的值替换。
2. `${变量名#匹配字符}`:删除变量值开头的匹配字符。
3. `${变量名%匹配字符}`:删除变量值结尾的匹配字符。
4. `${变量名/旧字符/新字符}`:将变量值中的第一个旧字符替换为新字符。
5. `${变量名//旧字符/新字符}`:将变量值中所有的旧字符替换为新字符。
6. `${变量名^匹配字符}`:将变量值中的匹配字符替换为大写。
7. `${变量名^^匹配字符}`:将变量值中的匹配字符替换为大写,如果不指定匹配字符,则替换所有字符。
8. `${变量名,匹配字符}`:将变量值中的匹配字符替换为小写。
9. `${变量名,,匹配字符}`:将变量值中的匹配字符替换为小写,如果不指定匹配字符,则替换所有字符。
使用变量替换可以方便地获取字符串的部分内容、删除匹配字符、替换字符大小写等操作。
shell 脚本判断一个字符串 是否包含某个字符串
可以使用Shell脚本中的字符串匹配操作符“=~”来判断一个字符串是否包含某个字符串。具体操作如下:
```
if [[ "$str1" =~ "$str2" ]]; then
echo "str1 contains str2"
else
echo "str1 does not contain str2"
fi
```
其中,"$str1"表示要判断的字符串,"$str2"表示要查找的字符串。如果"$str1"包含"$str2",则输出"str1 contains str2",否则输出"str1 does not contain str2"。