MST

星途 面试题库

面试题:Bash复杂字符串操作及逻辑处理

给定一个包含多个单词的字符串变量str,每个单词可能包含数字和特殊字符,要求编写一个Bash脚本,将字符串中的每个单词按照字母顺序排序(忽略数字和特殊字符),如果一个单词中全是数字和特殊字符则保持不变,最后将处理后的单词重新组合成一个字符串并输出。例如,输入str="a3bcd &12# 456 efg!h",输出应该是"abcd3 &12# 456 efgh!"
21.9万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

str="a3bcd &12# 456 efg!h"
words=($str)
result=""

for word in "${words[@]}"; do
    if [[ $word =~ ^[[:digit:][:punct:]]+$ ]]; then
        result="$result $word"
    else
        sorted_word=$(echo $word | sed 's/[^a-zA-Z]//g' | tr -d '\n' | sort | uniq | tr -d '\n')
        for char in $word; do
            if [[ $char =~ [a-zA-Z] ]]; then
                continue
            fi
            sorted_word="$sorted_word$char"
        done
        result="$result $sorted_word"
    fi
done

echo "${result:1}"