Я думаю, что этот абзац говорит о nullfs
.
Если у вас есть файл (, пусть это будет foo
), который накладывается с помощью unionfs
монтирования, вы можете mount_nullfs
сначала переместить его в какой-нибудь другой файл (, скажем, bar
), а затем выполнить mount_unionfs
. После этого вы сможете получить доступ к файлу foo
через имя файла bar
.
Должна быть возможность играть на «одном -лайнере». На самом деле вам нужно только правило, которое изменяет поле 10, если оно встречает отметку времени без миллисекунд, и одно правило, которое просто «печатает» всю строку для общего случая (, включая возможную модификацию из-за правила 1 ). Итак, если предположитьGNU Awk
:
awk -F'|' -v OFS='|' '$10 ~ /^[[:digit:]]{4}(-[[:digit:]]{2}){2} ([[:digit:]]{2}:){2}[[:digit:]]{2}$/ {$10=$10".000"} {print}' textfile
должно помочь.
Вышеупомянутое регулярное выражение в большинстве случаев чрезмерно "тщательно" проверяет отметку времени.Если вы достаточно доверяете своему формату файла, вы можете уменьшить проверку поля 10 до
awk -F'|' -v OFS='|' '$10 ~ /:[0-5][0-9]$/ {$10=$10".000"} {print}'
, для которого также больше не требуется версия GNU awk
.
Применение к тестовому входу
a|b|c|d|e|f|i|j|k|2020-01-20 10:22:33|m|n|o
a|b|c|d|e|f|i|j|k|2020-01-20 10:22:33.123|m|n|o
дает:
~$ awk -F'|' -v OFS='|' '$10 ~ /:[0-5][0-9]$/ {$10=$10".000"} {print}' testinput
a|b|c|d|e|f|i|j|k|2020-01-20 10:22:33.000|m|n|o
a|b|c|d|e|f|i|j|k|2020-01-20 10:22:33.123|m|n|o