我有一个这样的日期和月份文本文件:
日=
8
9
10
15
1
月=
3
6
7
10
1
我需要将“0”添加到仅包含一位数的行中。我需要编写一个循环来在所有行中查找一位数,并在该数字的左侧添加“0”,例如;
日=
03
06
07
10
01
月=
03
06
07
10
01
答案1
xargs printf "%.2d\n" <file.txt
答案2
Perl 单行方法,适合每个 shell 可能都已预装 perl:
perl -ne 'printf("%02d\n",$_)'<numbers.txt > numbers_out.txt
答案3
使用sed
- 适合于对文本文件或流进行批量或流编辑等任务的工具。
作为管道中使用的过滤器:
sed 's/^[0-9]$/0&/'
作为编辑文件的命令:
sed -i 's/^[0-9]$/0&/' numfile.txt
代码将添加0
到仅包含单个数字的行前面0
- 9
。[0-9]
您也可以使用[[:digit:]]
。
答案4
awk
方法。命令完成后,将输出重定向回创建的文件tmp.txt
,并用替换原始文件。tmp.txt
命令
awk '/^[[:digit:]]$/ {$1="0"$1}1' numFile.txt > tmp.txt && mv tmp.txt numFile.txt
示例输出
xieerqi:$ cat numFile.txt
1
2
3
4
5
6
7
8
9
10
11
12
xieerqi:$ awk '/^[[:digit:]]$/ {$1="0"$1}1' numFile.txt > tmp.txt && mv tmp.txt numFile.txt
xieerqi:$ cat numFile.txt
01
02
03
04
05
06
07
08
09
10
11
12