Добавление числа к текстовому файлу с циклом

У меня есть текстовый файл дня-и-месяца как это:

день =

8
9
10
15
1

месяц =

3
6
7
10
1

Я должен добавить "0" к строкам, только включая однозначные числа. Я должен записать цикл, чтобы найти однозначное число во всех строках и добавить "0" слева от числа как;

день =

03
06
07
10
01

месяц =

03
06
07
10
01
2
задан 21 October 2015 в 20:37

5 ответов

Вы можете использовать printf, чтобы дополнить числа 0 соответственно:

while read num; do printf '%0.2d\n' "$num"; done <file.txt

, Чтобы спасти продукцию в том же файле:

while read num; do printf '%0.2d\n' "$num"; done <file.txt | tee file.txt
2
ответ дан 2 December 2019 в 01:25

Используя sed - инструмент подошел для задач как партия или редактирование потока текстовых файлов или потоков.

  • как фильтр, который будет использоваться в трубе: sed 's/^[0-9]$/0&/'

  • как команда, чтобы отредактировать файл: sed -i 's/^[0-9]$/0&/' numfile.txt

кодекс будет предварительно ожидать 0 к линиям, содержащим просто единственную цифру 0 - 9. Вместо [0-9] Вы можете также использовать [[:digit:]].

3
ответ дан 2 December 2019 в 01:25
xargs printf "%.2d\n" <file.txt
5
ответ дан 2 December 2019 в 01:25

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
0
ответ дан 2 December 2019 в 01:25

Подход остроты Perl, подходящий как, вероятно, каждая оболочка, предварительно установили жемчуг:

perl -ne 'printf("%02d\n",$_)'<numbers.txt > numbers_out.txt
4
ответ дан 2 December 2019 в 01:25

Другие вопросы по тегам:

Похожие вопросы: