Использование awk:
awk -F'[(),]' '{ printf( "(%d %d)\n", $2 * 10000, $3 * 10000 ); }' file
Как указывали другие, команда tail
, поставляемая с OS X, не имеет опции --retry
. Однако вы можете просто установить версию tail для GNU, которая имеет эту опцию; это часть GNU coreutils. Например, если вы используете порты MacPort, вы можете установить их, запустив sudo port install coreutils
.
Альтернативой просмотру файла в реальном времени является команда watch
, которая, к сожалению, также не поставляется с OS X. Однако вы можете использовать этот простой обходной путь.
Следующая команда продолжает повторять попытку файла, даже если он удален или недоступен. Он снова распечатает содержимое после его создания.
tail -F filename --retry
Вот скрипт tail-F
. Он принимает единственный аргумент — файл для хвоста. Вероятно, есть лучшие варианты (например, установка GNU tail
), но здесь мы демонстрируем, что простые версии инструментов часто можно собрать из доступных частей.
#!/bin/bash
#
file="$1"
size=$(stat -c '%s' "$file" 2>/dev/null)
test -z "$size" && echo "No file '$file'" >&2
while sleep 1
do
n_size=$(stat -c '%s' "$file" 2>/dev/null)
if [[ -n "$n_size" ]]
then
if [[ 0 == "$size" ]]
then
# Output whole file (so far)
dd bs=1K if="$file" 2>/dev/null
size="$n_size"
elif [[ "$n_size" > "${size:-0}" ]]
then
# Output new part of file
dd bs="$size" skip=1 if="$file" 2>/dev/null
size="$n_size"
elif [[ -z "$size" ]]
then
echo "New file '$file'" >&2
size=0
elif [[ "$n_size" < "${size:-0}" ]]
then
echo "Rewinding file '$file'" >&2
size=0
fi
fi
done
Используйтеtail --f=name
Значение по умолчанию для флага -f
— descriptor
. Изменив его на имя, tail
будет следовать за именем файла и будет продолжать отображаться даже после того, как файл будет усечен.
ПС. Вы все равно получите сообщениеtail: File truncated