Usando GNUdate
:
$ date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 CET 2017
El resultado estará en la zona horaria local (y en el entorno local ).
Para solicitar explícitamente la zona horaria IST, utilice, por ejemplo,
$ TZ=Asia/Calcutta date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 IST 2017
Para asegurarse de que también obtenga el formato de la configuración regional POSIX/C:
$ LC_TIME=C TZ=Asia/Calcutta date -d "2017-11-25 23:35:08"
Sat Nov 25 23:35:08 IST 2017
Tenga en cuenta que la función strftime()
en GNUawk
(ymawk
)no toma una cadena como su segundo argumento sino una marca de tiempo de Unix. Tendría que convertir la hora a una marca de tiempo de Unix usando mktime()
y luego al formato deseado con strftime()
. Llamar mktime()
implicaría primero dividir la entrada en año, mes, día, etc.
Además, $4
estará vacío en su llamada a la función (no hay un cuarto campo en la entrada ).
Альтернативная, более медленная и длинная версия.
#!/bin/sh
if [ ! -f "$1" ]
then
printf "No input file\n"
exit
fi
FIRST=`head -n 1 "${1}"`
LAST=`tail -n 1 "${1}"`
MID=`sed -n '$d; 2,$p' "${1}"`
printf "${FIRST}\n${LAST}\n${MID}\n"
exit
Медленнее из-за использования head
, tail
и sed
для доступа к файлу каждый раз. В большом файле (или множестве файлов )это может быть очень заметно.
$ printf '4m1\n,p\n' | ed -s file
line 1
line 4
line 2
line 3
Короткий ed
сценарий
4m1
,p
переместит четвертую строку после первой, а затем отобразит содержимое буфера редактирования в терминале.
Чтобы сохранить результат в новый файл,вы можете использовать перенаправление, например
printf '4m1\n,p\n' | ed -s file >newfile
или вы можете указать ed
сохранить файл с помощью
printf '4m1\nw newfile\n' | ed -s file
Команда w newfile
сохранит отредактированный буфер в указанный файл. Команда w
без имени файла сохранит файл с исходным именем.
Поскольку построчный редактор ed
считывает файл в память, его можно использовать для подобных целей, если файл имеет разумный, но не слишком большой размер (меньше гигабайт ).
Чтобы переместить последнюю строку, измените 4
на $
в приведенных выше командах.