参见英文答案 > Is it possible to pad integers with zeros using regular expressions? 2个
我想将前导零添加到一串数字中,以便正好有三位数.例如,考虑一下
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
现在,问题在于我在这里使用了三种不同的表达式,而我在一条管道中将多条线路连接起来.就像是
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
我从this post获得,但它不起作用,我不明白它是如何工作的.
我在Linux上使用GNU sed版本4.2.1
解决方法:
如果你可以考虑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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。