Команда awk - не самый подходящий инструмент для этой работы. Используйте команду cut, которая принимает в качестве аргумента символьные позиции полей, которые вы хотите извлечь. Поэтому в вашем примере укажите, что USERS
начинается с позиции 1 и заканчивается позицией 8, а rslt
начинается с позиции 33.
$ cut -c 1-8,33- input.txt USERS rslt usr1 B usr2 C usr3 usr4 A usr5 usr6 A usr7
О том, как считать позиции символов, см. следующее.
1 2 3 123456789012345678901234567890123456789 USERS position ref rslt usr1 X B usr2 2980 C usr3 3323 P usr4 A usr5 5251 U usr6 9990 A usr7 10345 T
Как прокомментировал @Jesse _b, .bash_history
содержит историю всех ваших предыдущих сеансов оболочки, кроме текущего, который можно просмотреть с помощью команды history
. Так что вам придется сначала сбросить текущую историю через
history -a
, а затем вы можете скопировать его в другой файл:
cp ~/.bash_history $path/filename.txt
Чтобы перед каждой записью в истории стояла метка времени, установите переменную $HISTTIMEFORMAT, например.
HISTTIMEFORMAT="%F %T: "
Чтобы получить дату и время в вашей истории, выполните следующие команды:
HISTTIMEFORMAT="%d/%m/%y %T "
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc
history
Как увидеть метки времени в истории bash
Почему это не дает мне полной истории?
См. ответ @michael -homer
If you want to make sure that they're always written immediately, you can put that command into your PROMPT_COMMAND variable:
export PROMPT_COMMAND='history -a'