Как обрезать вывод `who -b`, чтобы показывать только дату и время

Другие опубликовали хорошую информацию; однако есть еще одна важная деталь: Ubuntu не имеет полезной утилиты восстановления NTFS. Файловые системы иногда повреждаются. Это может привести к сбоям питания, ошибкам, сбоям системы и другим условиям. Когда Ubuntu встретит поврежденный том NTFS, Ubuntu откажется его монтировать. Таким образом, в системе только с Ubuntu использование NTFS на внутреннем диске - это проблема, ожидающая появления. Как только этот том NTFS будет поврежден (и он будет), вам придется переместить диск на другой компьютер или использовать аварийный диск Windows для его восстановления. Любое действие - это хлопот и даже создает новые риски.

Таким образом, если вы намереваетесь иметь только систему Ubuntu, как вам кажется, я настоятельно рекомендую преобразовать этот раздел данных из NTFS в Linux -формативный формат. Вы можете сделать это, создав резервную копию, конвертируя, а затем восстанавливая данные; или путем создания Linux-родного хранилища, копирования данных, а затем преобразования NTFS в Linux-native для использования каким-то другим способом. (Вы также можете скопировать данные, а затем изменить размер файловой системы Linux, но это создает новые риски, поэтому я рекомендую это делать, если у вас хорошая резервная копия.) Лучший подход действительно зависит от того, сколько данных вы говорите , сколько неиспользованного дискового пространства у вас есть и сколько у вас резервных копий.

Я воспользуюсь этой возможностью, чтобы перейти на мыльницу и сказать, что если у вас нет хорошего резервные копии, вы должны их сделать, даже если это означает покупку внешнего хранилища для целей резервного копирования. Каждые несколько дней я вижу рассказ о горе от кого-то, у кого нет хороших резервных копий и кто потерял незаменимые данные в результате. Пожалуйста, не становитесь одним из тех людей! Если преобразование из NTFS в собственный формат Linux помогает убедить вас купить необходимое резервное оборудование, то это еще одно преимущество для преобразования.

3
задан 9 November 2017 в 13:36

6 ответов

who -b | sed 's/.*  //' >> file.txt

работает для всех локалей, установленных в моей системе (см. тест ниже), в основном он удаляет все до последнего появления двух последующих символов пробела, которые должны совпадать с началом временной метки независимо от ваших настроек локали. [!d0 ]

$ for i in $(locale -a); do printf "%-10s: %s\n" $i "$(LANG=$i who -b | sed 's/.*  //')"; done
C         : Sep 23 20:22
C.UTF-8   : 2017-09-23 20:22
de_AT.utf8: 2017-09-23 20:22
de_BE.utf8: 2017-09-23 20:22
de_CH.utf8: 2017-09-23 20:22
de_DE.utf8: 2017-09-23 20:22
de_LI.utf8: 2017-09-23 20:22
de_LU.utf8: 2017-09-23 20:22
en_AG     : 2017-09-23 20:22
en_AG.utf8: 2017-09-23 20:22
en_AU.utf8: 2017-09-23 20:22
en_BW.utf8: 2017-09-23 20:22
en_CA.utf8: 2017-09-23 20:22
en_DK.utf8: 2017-09-23 20:22
en_GB.utf8: 2017-09-23 20:22
en_HK.utf8: 2017-09-23 20:22
en_IE.utf8: 2017-09-23 20:22
en_IN     : 2017-09-23 20:22
en_IN.utf8: 2017-09-23 20:22
en_NG     : 2017-09-23 20:22
en_NG.utf8: 2017-09-23 20:22
en_NZ.utf8: 2017-09-23 20:22
en_PH.utf8: 2017-09-23 20:22
en_SG.utf8: 2017-09-23 20:22
en_US.utf8: 2017-09-23 20:22
en_ZA.utf8: 2017-09-23 20:22
en_ZM     : 2017-09-23 20:22
en_ZM.utf8: 2017-09-23 20:22
en_ZW.utf8: 2017-09-23 20:22
it_IT.utf8: 2017-09-23 20:22
POSIX     : Sep 23 20:22

Здесь я оставлю свои другие решения:

who -b | awk '{print $(NF-1)" "$NF}' >> file.txt

будет печатать последние два столбца (разделенные пробелами) выходных команд , который работает для настройки локали, такой как ваш (согласно образцу в вашем вопросе).

Для выхода на английский язык вам нужны последние два столбца :

who -b | awk '{print $(NF-2)" "$(NF-1)" "$(NF)}' >> file.txt
2
ответ дан 22 May 2018 в 17:38
  • 1
    +1 за то, что он смотрит за шторы и раскрывает детали :-) – sudodus 12 October 2017 в 15:17
who -b | sed 's/.* //' >> file.txt

работает для всех локалей, установленных в моей системе (см. тест ниже), в основном он удаляет все до последнего появления двух последующих символов пробела, которые должны совпадать с началом временной метки независимо от ваших настроек локали.

$ for i in $(locale -a); do printf "%-10s: %s\n" $i "$(LANG=$i who -b | sed 's/.* //')"; done C : Sep 23 20:22 C.UTF-8 : 2017-09-23 20:22 de_AT.utf8: 2017-09-23 20:22 de_BE.utf8: 2017-09-23 20:22 de_CH.utf8: 2017-09-23 20:22 de_DE.utf8: 2017-09-23 20:22 de_LI.utf8: 2017-09-23 20:22 de_LU.utf8: 2017-09-23 20:22 en_AG : 2017-09-23 20:22 en_AG.utf8: 2017-09-23 20:22 en_AU.utf8: 2017-09-23 20:22 en_BW.utf8: 2017-09-23 20:22 en_CA.utf8: 2017-09-23 20:22 en_DK.utf8: 2017-09-23 20:22 en_GB.utf8: 2017-09-23 20:22 en_HK.utf8: 2017-09-23 20:22 en_IE.utf8: 2017-09-23 20:22 en_IN : 2017-09-23 20:22 en_IN.utf8: 2017-09-23 20:22 en_NG : 2017-09-23 20:22 en_NG.utf8: 2017-09-23 20:22 en_NZ.utf8: 2017-09-23 20:22 en_PH.utf8: 2017-09-23 20:22 en_SG.utf8: 2017-09-23 20:22 en_US.utf8: 2017-09-23 20:22 en_ZA.utf8: 2017-09-23 20:22 en_ZM : 2017-09-23 20:22 en_ZM.utf8: 2017-09-23 20:22 en_ZW.utf8: 2017-09-23 20:22 it_IT.utf8: 2017-09-23 20:22 POSIX : Sep 23 20:22

Здесь я оставлю свои другие решения:

who -b | awk '{print $(NF-1)" "$NF}' >> file.txt

будет печатать последние два столбца (разделенные пробелами) выходных команд , который работает для настройки локали, такой как ваш (согласно образцу в вашем вопросе).

Для выхода на английский язык вам нужны последние два столбца :

who -b | awk '{print $(NF-2)" "$(NF-1)" "$(NF)}' >> file.txt
2
ответ дан 18 July 2018 в 05:25
who -b | sed 's/.* //' >> file.txt

работает для всех локалей, установленных в моей системе (см. тест ниже), в основном он удаляет все до последнего появления двух последующих символов пробела, которые должны совпадать с началом временной метки независимо от ваших настроек локали.

$ for i in $(locale -a); do printf "%-10s: %s\n" $i "$(LANG=$i who -b | sed 's/.* //')"; done C : Sep 23 20:22 C.UTF-8 : 2017-09-23 20:22 de_AT.utf8: 2017-09-23 20:22 de_BE.utf8: 2017-09-23 20:22 de_CH.utf8: 2017-09-23 20:22 de_DE.utf8: 2017-09-23 20:22 de_LI.utf8: 2017-09-23 20:22 de_LU.utf8: 2017-09-23 20:22 en_AG : 2017-09-23 20:22 en_AG.utf8: 2017-09-23 20:22 en_AU.utf8: 2017-09-23 20:22 en_BW.utf8: 2017-09-23 20:22 en_CA.utf8: 2017-09-23 20:22 en_DK.utf8: 2017-09-23 20:22 en_GB.utf8: 2017-09-23 20:22 en_HK.utf8: 2017-09-23 20:22 en_IE.utf8: 2017-09-23 20:22 en_IN : 2017-09-23 20:22 en_IN.utf8: 2017-09-23 20:22 en_NG : 2017-09-23 20:22 en_NG.utf8: 2017-09-23 20:22 en_NZ.utf8: 2017-09-23 20:22 en_PH.utf8: 2017-09-23 20:22 en_SG.utf8: 2017-09-23 20:22 en_US.utf8: 2017-09-23 20:22 en_ZA.utf8: 2017-09-23 20:22 en_ZM : 2017-09-23 20:22 en_ZM.utf8: 2017-09-23 20:22 en_ZW.utf8: 2017-09-23 20:22 it_IT.utf8: 2017-09-23 20:22 POSIX : Sep 23 20:22

Здесь я оставлю свои другие решения:

who -b | awk '{print $(NF-1)" "$NF}' >> file.txt

будет печатать последние два столбца (разделенные пробелами) выходных команд , который работает для настройки локали, такой как ваш (согласно образцу в вашем вопросе).

Для выхода на английский язык вам нужны последние два столбца :

who -b | awk '{print $(NF-2)" "$(NF-1)" "$(NF)}' >> file.txt
2
ответ дан 24 July 2018 в 18:19

Здесь вы: who -b | cut -c23-40, а также who -b | cut -d' ' -f13,14

Это вывод, который я получаю в обоих случаях: 2017-10-11 07:55.

0
ответ дан 22 May 2018 в 17:38

Здесь вы: who -b | cut -c23-40, а также who -b | cut -d' ' -f13,14

Это вывод, который я получаю в обоих случаях: 2017-10-11 07:55.

0
ответ дан 18 July 2018 в 05:25

Здесь вы: who -b | cut -c23-40, а также who -b | cut -d' ' -f13,14

Это вывод, который я получаю в обоих случаях: 2017-10-11 07:55.

0
ответ дан 24 July 2018 в 18:19

Другие вопросы по тегам:

Похожие вопросы: