使用循环向文本文件添加数字

使用循环向文本文件添加数字

我有一个这样的日期和月份文本文件:

日=

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

相关内容