在sed中添加前导0

雷米

我想在数字串中添加前导零,以便恰好具有三个数字。考虑一下

echo "hello_1"   | sed -E 's/([0-9]+)/00\1/'  # hello_001
echo "hello_12"  | sed -E 's/([0-9]+)/0\1/'   # hello_012
echo "hello_123" | sed -E 's/([0-9]+)/\1/'    # hello_123

现在的问题是,我在这里使用三种不同的表达式,而我却一次将其输送到sed多行。就像是

printf "hello_1\nhello_12\nhello_123\n" | sed -E 's/([0-9]+)/0\1/'
hello_01
hello_012
hello_0123

结果不是我想要的。预期的输出是

hello_001
hello_012
hello_123

我试过了

printf "hello_1\nhello_12\nhello_123\n" |  sed -r ":r;s/\b[0-9]{1,$((3-1))}\b/0&/g;tr"
hello_1
hello_12
hello_123

是我从这篇文章中得到的,但它不起作用,我也不知道它是如何工作的。


GNU sed version 4.2.1在Linux上使用

阿努巴瓦

如果可以考虑的awk话,使用它会容易得多printf

printf "hello_1\nhello_12\nhello_123\n" | awk -F_ '{printf "%s%s%03d\n", $1, FS, $2}'

hello_001
hello_012
hello_123

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章