В этом случае Вы извлекли бы выгоду из ошибочных предупреждений от 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
при необходимости.
sed -e 's/ \([0-9]:\)/ 0\1/'
добавляет нуль, если единственная цифра происходит между пространством и двоеточием. Если Вы также хотите избавиться от пространства после минут, это
sed -e 's/ \([0-9]:[0-9][0-9]\) / 0\1/'
Найдите число перед двоеточием и распечатайте его как две цифры с нулем продвижения:
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|/'
09:22
)? Я не могу протестировать легко прямо сейчас, но я был бы взволнован по поводу Perl, видя литерал, например. 09
и попытка интерпретировать это как восьмеричное число, потому что это 0 снабжается префиксом.
– a CVn
04.06.2013, 11:11
версия 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