欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 macOS 的 shell 中,你可以使用以下命令来处理字符串 "AB-11111111":先移除左右空格,再判断是否以 "AB-" 开头,如果是的话就移除 "AB-"。# OK 有大用
bashstr=" AB-11111111 " trimmed=$(echo "$str" | xargs) # 移除左右空格 if [[ "$trimmed" == AB-* ]]; then result=${trimmed#AB-} # 移除开头的 "AB-" else result="$trimmed" fi echo "$result" # 输出结果: 11111111
移除左右空格:
使用 xargs 或 ${var// /} 来移除空格,这里 xargs 是简单有效的方法。
也可以使用 awk '{$1=$1};1' 或 sed 's/^[[:space:]]*//;s/[[:space:]]*$//'。
检查是否以 "AB-" 开头:
[[ "$trimmed" == AB-* ]] 是 Bash 的模式匹配语法,判断字符串是否以 AB- 开头。
移除 "AB-"(如果匹配):
${var#AB-} 是参数扩展语法,表示从变量 $var 开头移除 AB-。
bashstr=" AB-11111111 "; echo "${$(echo "$str" | xargs)#AB-}"
(注意:${var#prefix} 是纯 Bash 功能,如果你在严格 POSIX shell 中,可能需要 echo "$str" | sed 's/^AB-//' 替代)
11111111
这样就能得到移除 AB- 后的结果。如果需要进一步操作数字部分(如提取、计算等),可以继续扩展逻辑。
trimmed=$(echo "$gh" | xargs) 详解
在 macOS 或 Linux 的 shell(如 bash 或 zsh)中,以下命令用于移除变量中的 首尾空格:
bashtrimmed=$(echo "$gh" | xargs)
echo "$gh"
打印变量 $gh 的值(含可能的前后空格)。
| xargs
xargs 是一个命令行工具,默认行为是:
当没有额外参数时(如 xargs 不加命令),它仅执行 trim 操作。
去除输入字符串的首尾空格(类似于 trim())。
如果输入有多行,会将它们合并为一行(并用空格分隔)。
如果输入为空,则输出也为空。
trimmed=$(...)
将处理后的结果(去除空格后的字符串)赋值给变量 trimmed。
bashgh=" Hello World " trimmed=$(echo "$gh" | xargs) echo "原字符串: '$gh'" # 原字符串: ' Hello World ' echo "去除空格后: '$trimmed'" # 去除空格后: 'Hello World'
xargs 的副作用
如果 $gh 包含换行符或多行文本,xargs 会默认合并为一行(用空格分隔)。
如果仅需 trim 而不合并行,可以用其他方法(如 sed/awk)。
替代方法(更安全,推荐)
bashtrimmed=$(echo "$gh" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
sed 直接删除首尾空白字符(包括空格、制表符等)。
trimmed=$(echo "$gh" | xargs) 适合简单场景,能去除首尾空格。
如果字符串可能含换行符或复杂空格,建议用 sed 或 ${var%% }(Bash 原生字符串操作)。