You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash/Shell脚本中交换8位数字的前4位与后4位位置?

在Bash/Shell脚本中互换8位数字的前4位与后4位

以下是几种实现该需求的常用方法,均针对8位数字场景设计:

方法1:使用Bash原生参数扩展

无需依赖外部工具,直接利用Bash的字符串截取功能:

# 定义目标数字
num="01101000"
# 截取后4位 + 前4位,完成互换
result="${num:4:4}${num:0:4}"
# 输出结果
echo "$result"

执行后输出:10000110

方法2:使用sed正则替换

通过正则捕获组实现位置互换:

echo "01101000" | sed -E 's/^(.{4})(.{4})$/\2\1/'
  • -E 启用扩展正则表达式,避免对括号转义
  • ^(.{4})(.{4})$ 匹配开头的4个字符和结尾的4个字符,分别作为两个捕获组
  • \2\1 将捕获组顺序调换后输出

方法3:使用awk的substr函数

利用awk的字符串截取函数substr实现:

echo "01101000" | awk '{print substr($0,5,4) substr($0,1,4)}'
  • substr($0,5,4) 从第5个字符开始截取4个字符(对应原数字的后4位)
  • substr($0,1,4) 从第1个字符开始截取4个字符(对应原数字的前4位)

可选:添加输入校验

如果需要确保输入是8位数字,可以增加校验逻辑:

num="01101000"
if [[ "$num" =~ ^[0-9]{8}$ ]]; then
    result="${num:4:4}${num:0:4}"
    echo "$result"
else
    echo "错误:输入必须是8位数字"
fi

内容的提问来源于stack exchange,提问作者HashTable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 00:36:21