Как сделать 1:52 к 1:52 с, например: sed?

В этом случае Вы извлекли бы выгоду из ошибочных предупреждений от rm команда.

В Ваших сценариях инициализации оболочки (принятие bash, так ~/.bashrc), Вы могли исказить rm к также -i или -I.

alias rm="rm -i"

От man 1 rm

   -i     prompt before every removal

   -I     prompt once before removing more than three files, or when
          removing recursively.  Less intrusive than -i, while still
          giving protection against most mistakes

Более универсальный вопрос, "То, как я защищаю свою систему от меня", было обсуждено прежде. Короче говоря обратите внимание на то, что Вы делаете, и только команды выполнения как root при необходимости.

0
04.06.2013, 10:41
4 ответа
sed -e 's/ \([0-9]:\)/ 0\1/'

добавляет нуль, если единственная цифра происходит между пространством и двоеточием. Если Вы также хотите избавиться от пространства после минут, это

sed -e 's/ \([0-9]:[0-9][0-9]\) / 0\1/'
1
28.01.2020, 02:37

Найдите число перед двоеточием и распечатайте его как две цифры с нулем продвижения:

perl -wpe 's/(\d+):/sprintf("%02d:",$1)/e'

Для устранения проблемы пространства, можно расширить выражение немного:

perl -wpe 's/(\d+):(\d+) +\|/sprintf("%02d:%02d|",$1,$2)/e'

Или если Вы хотите соответствовать только точно своему случаю:

perl -wpe 's/ (\d:\d\d) \|/ 0$1|/'
1
28.01.2020, 02:37
  • 1
    Не Был бы первые два быть неприятным, если вход, оказывается уже, предварительно ожидается нулем (например. 09:22)? Я не могу протестировать легко прямо сейчас, но я был бы взволнован по поводу Perl, видя литерал, например. 09 и попытка интерпретировать это как восьмеричное число, потому что это 0 снабжается префиксом. –  a CVn 04.06.2013, 11:11
  • 2
    Нет, жемчуг обработает это правильно. –  Jenny D 04.06.2013, 11:39

Это могло бы работать на Вас (GNU sed):

sed 's/\b[0-9]:/0&/' file
0
28.01.2020, 02:37

версия non-sed:

$ cat sample.txt 
a|2013.06.13. 13:22|xx
b|2013.06.13. 1:52 |xx
c|2013.06.13. 2:26 |xx
c|2013.06.13. 2:6 |xx
$ while read l; do
>   IFS=" |:" read -a array <<< "$l"
>   printf "%s|%s %02s:%02s|%s\n" ${array[0]} ${array[1]} ${array[2]} ${array[3]} ${array[4]}
> done < sample.txt
a|2013.06.13. 13:22|xx
b|2013.06.13. 01:52|xx
c|2013.06.13. 02:26|xx
c|2013.06.13. 02:06|xx
0
28.01.2020, 02:37

Теги

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