如何使用sed将零添加到数字?

时间:2013-01-05 17:11:08

标签: sed awk

我想使用sed或awk在一行格式化文本的中间添加一个零。

示例输入文件

line 1

line 2

line 3

预期产出

line 01

line 02

line 03

5 个答案:

答案 0 :(得分:2)

您的问题有些含糊不清,但使用printfawk一起用零填充第二个字段会如何:

$ awk 'NF==2 { printf "%s %02d\n", $1, $2}' file
line 01
line 02
line 03
line 10
line 100

$ awk 'NF==2 { printf "%s %04d\n", $1, $2}' file
line 0001
line 0002
line 0003
line 0010
line 0100

如果您不想删除空行,请执行awk 'NF==2 { printf "%s %04d\n", $1, $2} NF!=2' file

答案 1 :(得分:0)

使用带后向引用的POSIX字符类

鉴于 / tmp / foo 包含:

line 1

line 2

line 3

您可以致电sed 's/[[:digit:]]/0&/' /tmp/foo以获得以下输出:

line 01

line 02

line 03

答案 2 :(得分:0)

在awk中这很容易:

awk '{print $1, 0$2}' input.txt > output.txt

在这种情况下,您显示的输入文字位于文件input.txt中,我将其保存到新文件output.txt

这也是一个容易理解的命令。 $1变量是您的“行”文字,$2变量是您的数字。此命令假定“行”文本中没有空格。有吗?

答案 3 :(得分:0)

发布的问题最简单的答案是:

sed 's/ / 0/'

如果没有这样做,请发布更具代表性的输入和预期输出,因为您可能需要考虑很多事项。

答案 4 :(得分:0)

这可能适合你(GNU sed):

sed 's/\</0/2' file