【发布时间】:2017-11-28 11:12:23
【问题描述】:
我想在一串数字中添加前导零,以便恰好有三个数字。例如考虑
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
我从this post 得到的,但它不起作用,我不明白它是如何工作的。
我在 Linux 上使用 GNU sed version 4.2.1
【问题讨论】: