如何在字符串开头添加$x个0?sed工具动态补0的实现方案
解决字符串开头添加指定数量0的问题
方法1:调整sed写法实现变量解析
sed的单引号语法会屏蔽shell变量解析,改用双引号包裹替换表达式,同时先构造出对应数量的0字符串:
# 先生成x个0的字符串 zeros=$(printf "%0${x}d" 0) # 替换字符串开头 echo "$exampleString" | sed "s/^/$zeros/"
也可以直接把生成0的逻辑嵌入sed命令:
echo "$exampleString" | sed "s/^/$(printf "%0${x}d" 0)/"
注意:你之前用的sed -i参数是用来直接修改文件的,通过管道传输入时不需要该参数,否则会报错。
方法2:直接用shell字符串拼接(更简洁)
利用shell本身的字符串拼接特性,无需调用外部工具:
zeros=$(printf "%0${x}d" 0) echo "${zeros}${exampleString}"
方法3:用awk实现
通过-v参数把shell变量传入awk,再完成拼接:
echo "$exampleString" | awk -v x="$x" '{printf "%0*d%s\n", x, 0, $0}'
关键提示:shell中单引号会完全屏蔽变量解析,双引号则会正常解析变量,这是你之前无法调用$x的核心原因。
内容的提问来源于stack exchange,提问作者chyxo
相关产品推荐
相关产品推荐

