我想使用sed或awk在一行格式化文本的中间添加一个零。
line 1
line 2
line 3
line 01
line 02
line 03
答案 0 :(得分:2)
您的问题有些含糊不清,但使用printf
与awk
一起用零填充第二个字段会如何:
$ 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)
鉴于 / 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